Kirill Bulatov
ca42a52051
Code review fixes
2021-01-04 18:33:05 +02:00
Kirill Bulatov
ed1ef3ae13
Do not collect trait type aliases
2021-01-04 17:44:27 +02:00
Kirill Bulatov
8721574a85
Simplify
2021-01-04 17:44:27 +02:00
Kirill Bulatov
d27dea86b7
Properly check assoc items lookup
2021-01-04 17:44:27 +02:00
Kirill Bulatov
63d83fa385
Add associated data into fst
2021-01-04 17:44:27 +02:00
Kirill Bulatov
1bfc3a50c0
Add a basic test for the trait fuzzy import
2021-01-04 17:44:27 +02:00
bors[bot]
5b86ff3e91
Merge #7113
...
7113: Manual updates r=matklad a=tekul
Add some details on how to build the manual and some clarification on how to deal with "proc macro2 warnings.
For context, this arose from [this question](https://users.rust-lang.org/t/how-to-disable-rust-analyzer-proc-macro-warnings-in-neovim/53150 ) on users.rust-lang.org.
Co-authored-by: Luke Taylor <tekul.hs@gmail.com>
2021-01-03 18:22:07 +00:00
Jesse Bakker
c7e0c7f43a
Upgrade expect-test to 1.1
2021-01-03 14:43:29 +01:00
Jonas Schievink
85cc3cfec9
Revert "Proper handling $crate and local_inner_macros"
2021-01-03 11:47:57 +01:00
bors[bot]
3bf4cec799
Merge #7128
...
7128: Implement HasAttrs for GenericParam r=matklad a=Veykril
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-01-03 08:49:59 +00:00
cynecx
3e9847f747
Use fully qualified Itertools::intersperse
call to silence nightly warnings about a potential name collision due to recent libstd api additions
2021-01-02 20:58:53 +01:00
bors[bot]
a88d4f8c72
Merge #7133
...
7133: Proper handling $crate and local_inner_macros r=jonas-schievink a=edwin0cheng
This PR introduces `HygineFrames` to store the macro definition/call site hierarchy in hyginee and when resolving `local_inner_macros` and `$crate`, we use the token to look up the corresponding frame and return the correct value.
See also: https://rustc-dev-guide.rust-lang.org/macro-expansion.html#hygiene-and-hierarchies
fixe #6890 and #6788
r? @jonas-schievink
Co-authored-by: Edwin Cheng <edwin0cheng@gmail.com>
2021-01-02 17:42:45 +00:00
Edwin Cheng
fe5340d970
Introduce HygieneFrames for proper token hyginee
2021-01-02 20:39:57 +08:00
Lukas Wirth
ec448ca4b3
Impl HasAttrs for GenericParam
2021-01-02 00:44:59 +01:00
Luke Taylor
10c9efc24b
Expand doc on dealing with "proc macro not expanded"
...
Added the error message to the doc for the UnresolvedProcMacro
diagnostic, explaining that either enabling the procMacro setting
or disabling this diagnostic should make the warnings go away.
2021-01-01 18:47:54 +00:00
bors[bot]
0e5fe47153
Merge #7080
...
7080: Implement ConstParams for HIR r=Veykril a=Veykril
r? @flodiebold
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-01-01 13:45:10 +00:00
Lukas Wirth
0acdb73076
Add ConstParams to the HIR
2021-01-01 10:06:42 +01:00
AdnoC
cca0dfa79e
we can have one less call to name.clone()
2020-12-31 13:46:13 -07:00
AdnoC
435c189c80
deduplicate macro completions from legacy macros and prelude
2020-12-31 13:41:49 -07:00
Lukas Wirth
816190c6f6
Remove some unneeded string allocations
2020-12-31 10:13:14 +01:00
kjeremy
dc1396eec7
Update crates
2020-12-30 10:39:50 -05:00
Aleksey Kladov
0c3be014ec
Simplify
2020-12-30 13:38:37 +03:00
Laurențiu Nicola
42c24ff25f
Avoid a couple of allocations
2020-12-29 14:35:49 +02:00
Kirill Bulatov
eecbb51cb3
Better display methods in expect tests
2020-12-28 16:13:37 +02:00
Kirill Bulatov
8600cf807e
Add tests
2020-12-28 15:22:03 +02:00
Kirill Bulatov
e4c3f753d2
Add docs and optimisations
2020-12-28 15:09:39 +02:00
Kirill Bulatov
c4995cfbd5
Better query api and fuzzy search
2020-12-28 15:06:10 +02:00
Kirill Bulatov
0e48cd0c3c
Draft the module exclusion in modules
2020-12-28 15:06:10 +02:00
Edwin Cheng
877c251bef
Fixed old failed test due to new fixes
2020-12-28 20:08:50 +08:00
bors[bot]
06320015af
Merge #7021
...
7021: Track labels in the HIR r=matklad a=Veykril
Groundwork for #6966
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2020-12-24 12:04:28 +00:00
Lukas Wirth
262b9c3982
Track labels in the HIR
2020-12-24 12:49:40 +01:00
Lukas Wirth
a142beaf01
Implement const block inference
2020-12-23 12:24:24 +01:00
Lukas Wirth
0a780c0ab3
Implement const pat inference
2020-12-23 12:15:38 +01:00
bors[bot]
fd1fcf2c2e
Merge #7010
...
7010: Update ungrammar for const block patterns r=matklad a=Veykril
Fixes #6848
Adds const blocks and const block patterns to the AST and parses them.
Blocked on https://github.com/rust-analyzer/ungrammar/pull/17/ , will merge that PR there once this one gets the OK so I can remove the local ungrammar dependency path and fix the Cargo.lock.
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2020-12-23 10:37:30 +00:00
Aleksey Kladov
2c84c2d07a
Don't think that /submod.rs is /mod.rs
2020-12-23 11:02:42 +03:00
Lukas Wirth
be7260485e
Update ungrammar for const block patterns
2020-12-23 01:26:31 +01:00
bors[bot]
eefbae7ed4
Merge #6921
...
6921: Higher-ranked trait bounds for where clauses r=flodiebold a=Veykril
There is a slight problem with this which is also noted in a FIXME now but `LifetimeParameters` of these ForLifetime where clauses allocate the lifetimes in the corresponding arena as if they were lifetimes of the item itself and not just the clause they belong to. I wasn't entirely sure what I could do about this but given nothing really uses lifetimes like that currently I figured it might be fine? Open to suggestions for that problem.
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2020-12-20 11:47:01 +00:00
Jonas Schievink
218e88ab55
Add API for mapping Attr
back to its syntax node
2020-12-19 15:15:02 +01:00
Jonas Schievink
a2062d1892
Make RawAttrs
crate-private
...
There should be no need to use this from outside
2020-12-19 02:44:22 +01:00
Jonas Schievink
81ccf37d3b
Remove Attrs::merge
...
Only the `RawAttrs` version of this is in use
2020-12-19 02:43:00 +01:00
Jonas Schievink
0ac75f8982
Remove resolved FIXME
2020-12-19 02:32:31 +01:00
Jonas Schievink
aa00d1acd6
fixture -> ra_fixture
2020-12-19 01:12:41 +01:00
Jonas Schievink
d5edd0e928
Test paths to derive macros
2020-12-19 01:11:33 +01:00
Jonas Schievink
ea5cc8d07a
More accurate #[derive]
parsing
...
This now allows full paths to the derive macro
2020-12-19 01:10:56 +01:00
bors[bot]
38b108c20e
Merge #6935
...
6935: Don't look at attributes when lowering to ItemTree r=jonas-schievink a=jonas-schievink
Resolves 2 `cfg_attr` FIXMEs
bors r+
Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
2020-12-18 19:38:07 +00:00
Jonas Schievink
77972e2001
Don't look at attributes when lowering to ItemTree
...
Resolves 2 `cfg_attr` FIXMEs
2020-12-18 20:37:26 +01:00
Jonas Schievink
aab9cc9cfb
Hit a mark
2020-12-18 20:25:41 +01:00
Jonas Schievink
382ee2fa03
Add test
2020-12-18 20:01:02 +01:00
Jonas Schievink
d42d1d33f0
Fix parsing of active cfg_attr
2020-12-18 20:00:59 +01:00
Jonas Schievink
08de1b4fa5
Implement RawAttr::filter
2020-12-18 18:58:42 +01:00
Jonas Schievink
4f07d8dd58
Refactor attributes API to allow handling cfg_attr
2020-12-18 02:24:14 +01:00
Lukas Wirth
fa65d6ba85
Higher-ranked trait bounds for where clauses
2020-12-17 22:01:42 +01:00
Jonas Schievink
9231821c03
Make Attrs::from_attrs_owner
private
2020-12-17 15:45:26 +01:00
Jonas Schievink
eaeabbb815
Add AttrDefId::krate
...
Access to the containing crate will be needed to handle `cfg_attr`
2020-12-17 14:29:29 +01:00
Jonas Schievink
21b68a328c
Remove module_lang_items
...
It isn't used anywhere except in `crate_lang_items`. Remove it to
slightly reduce memory usage and simplify the code.
2020-12-17 00:26:01 +01:00
Jonas Schievink
28b5334580
Avoid querying attributes in item tree lowering
...
ItemTree is per-file, so there is no unique crate associated with it.
This means that it cannot know the active CfgOptions and thus couldn't
handle `cfg_attr`.
Prepare it for `cfg_attr`s by avoiding accessing attributes.
2020-12-16 23:42:03 +01:00
bors[bot]
067067a6c1
Merge #6896
...
6896: Node-ify lifetimes r=jonas-schievink a=Veykril
Let's see if this passes the tests 🤞
Depends on https://github.com/rust-analyzer/ungrammar/pull/15
Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
Co-authored-by: Jonas Schievink <jonas.schievink@ferrous-systems.com>
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2020-12-16 17:08:03 +00:00
bors[bot]
63bbdb31e5
Merge #6897
...
6897: Basic support for macros 2.0 r=jonas-schievink a=jonas-schievink
This adds support for (built-in-only) macros 2.0, and removes some hacks used for builtin derives, which are declared via macros 2.0 in libcore.
First steps for https://github.com/rust-analyzer/rust-analyzer/issues/2248 .
Blocked on https://github.com/rust-analyzer/ungrammar/pull/16 .
Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
Co-authored-by: Jonas Schievink <jonas.schievink@ferrous-systems.com>
2020-12-16 16:52:46 +00:00
Lukas Wirth
dd496223f5
Node-ify lifetimes
2020-12-16 14:16:09 +01:00
Jonas Schievink
b238ddd21a
Make macro def krate mandatory
...
Refactors builtin derive support to go through proper name resolution
2020-12-15 20:33:05 +01:00
Jonas Schievink
c31c3246a8
Basic support for decl macros 2.0
2020-12-15 18:43:34 +01:00
bors[bot]
eb9ba457b0
Merge #6879
...
6879: Change HasChildSource::ChildId assoc item to generic param r=matklad a=Veykril
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2020-12-15 17:22:03 +00:00
Lukas Wirth
2c67a4abe4
Change HasChildSource::ChildId assoc item to generic param
2020-12-15 18:21:01 +01:00
Jonas Schievink
c1cb595382
Move to upstream macro_rules!
model
2020-12-15 15:37:37 +01:00
bors[bot]
39aae835fd
Merge #6886
...
6886: Expand statements for macros in lowering r=matklad a=edwin0cheng
Fixes #6811
Co-authored-by: Edwin Cheng <edwin0cheng@gmail.com>
2020-12-15 12:41:07 +00:00
Edwin Cheng
a68ff269a9
Expand statements for mbe in lowering
2020-12-15 14:39:15 +08:00
Lukas Wirth
c6172f3f6d
Add LifetimeParam resolving to Semantics
2020-12-14 16:04:28 +01:00
Lukas Wirth
ae8a802085
Ignore lifetime params in substitutions
2020-12-13 11:34:44 +01:00
bors[bot]
479d1f7eec
Merge #6818
...
6818: Add Lifetimes to the HIR r=matklad a=Veykril
This doesn't handle resolve yet as I don't know yet how that will be used. I'll get to that once I start moving the lifetime reference PR to the hir.
This also adds a new `hir` name type for lifetimes and labels, `hir::LifetimeName`.
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2020-12-12 14:35:38 +00:00
Lukas Wirth
11f8664182
Add Lifetimes to the HIR
2020-12-12 00:56:52 +01:00
Lukas Wirth
8ed8e4f25a
Use Attrs::docs in NavigationTarget instead of DocCommentsOwner
2020-12-11 21:19:58 +01:00
bors[bot]
91bf15a2f5
Merge #6834
...
6834: Use Attrs::docs in runnables instead of DocCommentsOwner r=kjeremy a=Veykril
I figured that we should probably move as much of the doc usage to the HIR as possible hence this PR. If we should keep this AST-based feel free to close.
This change does have the nice(but not really useful as I doubt anyones gonna write doc tests like these) side effect that these two doc string snippets allow being run now.
![image](https://user-images.githubusercontent.com/3757771/101945607-bf241400-3bee-11eb-96ce-ccae80028b1f.png )
![image](https://user-images.githubusercontent.com/3757771/101946375-2e9a0380-3bef-11eb-9950-e35168fdd048.png )
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2020-12-11 19:57:08 +00:00
Lukas Wirth
ac19a71459
Use Attrs::docs in runnables instead of DocCommentsOwner
2020-12-11 20:11:03 +01:00
Jonas Schievink
00c34b048e
Add upstream commit to builtin_attr.rs
2020-12-11 19:12:06 +01:00
Jonas Schievink
253678ead2
Add builtin attributes for use in nameres
2020-12-11 14:04:33 +01:00
Jonas Schievink
d338513e95
Remove item tree tests
...
They were useful during initial development of the item tree, but
now just cause churn
2020-12-10 15:53:48 +01:00
Jonas Schievink
d82292e1ce
Ignore extern items in incorrect-case check
2020-12-10 15:45:01 +01:00
Aleksey Kladov
6e24321e45
Introduce anchored_path
...
They allow to represent paths like `#[path = "C:\path.rs"] mod foo;`
in a lossless cross-platform & network-transparent way.
2020-12-09 19:07:05 +03:00
bors[bot]
ef989880ff
Merge #6771
...
6771: Properly attach inner attributes in Attrs::new r=matklad a=Veykril
Properly attach inner and outer attributes to the things they actually belong to in the HIR. ~~I can add some tests for this if wanted once I know where to put them/how to test for this.~~ Put some tests into `hover.rs`.
So the following snippet
```rust
mod foo {
//! Hello
}
```
now shows `Hello` on hover 🎉
Fixes #2148
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2020-12-09 13:16:39 +00:00
bors[bot]
cd83ded8ee
Merge #6774
...
6774: Increment recursion count in Expander only on success r=lnicola a=Veykril
Fixes #6764
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2020-12-09 11:35:18 +00:00
Lukas Wirth
ec415618df
Properly decrement recursion count in Expander
2020-12-09 12:26:33 +01:00
Lukas Wirth
f8823e8cbc
Properly fetch inner and outer docs on hir-level
2020-12-09 09:22:41 +01:00
Lukas Wirth
eac77997bf
Properly fetch inner and outer attributes on hir-level
2020-12-08 23:21:20 +01:00
Jonas Schievink
306c6cbaac
Use original_file_range
in TestDB
2020-12-08 19:03:24 +01:00
Jonas Schievink
6c1d292569
Add test for $crate
in builtin macros
...
Fixes #6716
2020-12-08 17:17:30 +01:00
Jonas Schievink
678c74430b
Handle macros in TestDB::check_diagnostics
2020-12-08 17:16:18 +01:00
Lukas Wirth
2facd9517f
Escape string literals in Attr::from_src
2020-12-08 13:47:58 +01:00
Lukas Wirth
7a338e5207
Replace Arc<[str]> with String in attr::Documentation
2020-12-07 21:55:00 +01:00
Lukas Wirth
b064f6da9e
Keep doc attribute order
2020-12-07 20:38:28 +01:00
Lukas Wirth
efe86a42dc
Remove raw pre and suffixes from string attr literals
2020-12-07 19:58:17 +01:00
Lukas Wirth
1caaa201fa
Remove hir_def/docs.rs module
2020-12-07 19:58:17 +01:00
Lukas Wirth
b3652ef288
Remove documentation query
2020-12-07 19:58:17 +01:00
Lukas Wirth
93262c750e
Don't insert blank lines between doc attributes
2020-12-07 16:10:46 +01:00
Jonas Schievink
957fb18799
Make compile_error!
message match upstream rustc
...
It only consists of the argument passed to it
2020-12-03 19:07:37 +01:00
Jonas Schievink
3e6ffa5124
Fix proc macro token mapping
2020-12-03 18:38:05 +01:00
Jonas Schievink
883c8d177d
Make compile_error!
lazy and emit a diagnostic
2020-12-03 15:48:29 +01:00
Jonas Schievink
4634bfb332
Give better diagnostic if OUT_DIR
is unset
2020-12-03 15:48:29 +01:00
Jonas Schievink
17542d08b4
Update/Fix tests
2020-12-03 15:48:29 +01:00
Jonas Schievink
a634243634
Propagate eager expansion errors
2020-12-03 15:48:29 +01:00
Jonas Schievink
f4866bb05c
Test macro diagnostics in body lowering
2020-12-02 15:03:21 +01:00