Commit graph

17470 commits

Author SHA1 Message Date
Lukas Wirth
b29e8ed994 Remove unnecessary completion::macro_in_item_position 2021-06-07 19:46:25 +02:00
Lukas Wirth
aa29364f83 Reorder CompletionContext fields 2021-06-07 19:06:03 +02:00
bors[bot]
8b6c3eaaeb
Merge #9164
9164: internal: Reduce the number of direct fields in `CompletionContext` some more r=Veykril a=Veykril

Doesn't make the code much simpler yet.
bors r+

Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-06-07 12:17:28 +00:00
Lukas Wirth
4eabcb2c01 Move more things into PathCompletionContext 2021-06-07 14:08:05 +02:00
bors[bot]
5f7fc5ae68
Merge #9161
9161: Fix incorrect config usage in hover references r=Veykril a=Veykril

bors r+

Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-06-07 10:33:13 +00:00
Lukas Wirth
88bc4f17fd Fix incorrect config usage in hover references 2021-06-07 12:32:25 +02:00
bors[bot]
1d8bd4fdf6
Merge #9160
9160: internal: make `Documentation::new` non-generic r=lnicola a=lnicola



Co-authored-by: Laurențiu Nicola <lnicola@dend.ro>
2021-06-07 09:59:32 +00:00
Laurențiu Nicola
15dd475988 Make Documentation::new non-generic 2021-06-07 12:58:51 +03:00
bors[bot]
6e30aeeb21
Merge #9157
9157: minor: Use HTTPS for clippy lint JSON r=lnicola a=lnicola



Co-authored-by: Laurențiu Nicola <lnicola@dend.ro>
2021-06-07 07:40:52 +00:00
Laurențiu Nicola
993c7a165e Use HTTPS for clippy lint JSON 2021-06-07 10:40:12 +03:00
bors[bot]
efa84cd08d
Merge #9106
9106: feat: goto definition on an impl fn goes to that fn in the trait r=lf- a=lf-

e.g. if you have a trait T and `impl T for S` for some struct, if you
goto definition on some function name inside the impl, it will go to the
definition of that function inside the `trait T` block, rather than the
current behaviour of not going anywhere at all.

![ra goto def trait the other way](https://user-images.githubusercontent.com/6652840/120403989-39aa3280-c2fa-11eb-9359-639346878acd.gif)


Co-authored-by: Jade <software@lfcode.ca>
2021-06-07 04:52:38 +00:00
Jade
34ce05781f feat: goto def on impl items also goes to the defn in the trait
It was trivial to extend this to associated consts/associated types and
I just didn't think of it.
2021-06-06 21:52:00 -07:00
Jade
8a57c73640 feat: goto definition on an impl fn goes to that fn in the trait
e.g. if you have a trait T and `impl T for S` for some struct, if you
goto definition on some function name inside the impl, it will go to the
definition of that function inside the `trait T` block, rather than the
current behaviour of not going anywhere at all.
2021-06-06 21:51:17 -07:00
Lukas Wirth
e475bcdcc6 Simplify CompletionContext by introducing a path CallKind enum 2021-06-06 20:02:26 +02:00
bors[bot]
13da28cc2b
Merge #9155
9155: internal: replace attribute with equivalent whitespace r=jonas-schievink a=jonas-schievink

This is needed to that the `TokenMap` we create contains offsets that match the source. Currently the offsets don't match because the attribute is removed, shifting all subsequent token offsets by the attribute's text length.

Currently this fix has no visible effect because we don't remap tokens in attribute macros.

bors r+

Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
2021-06-06 14:50:06 +00:00
Jonas Schievink
1d5c60ff54 Replace attribute with equivalent whitespace
This is needed to that the `TokenMap` we create contains offsets that
match the source.
2021-06-06 16:48:13 +02:00
bors[bot]
d616a6a456
Merge #9149
9149: feat: Support goto-definition for include macros input path r=Veykril a=Veykril

![0l6l9iWPNE](https://user-images.githubusercontent.com/3757771/120891155-3fa85800-c607-11eb-9b20-7ac330dceb4b.gif)
Fixes #5871


Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-06-05 19:26:33 +00:00
bors[bot]
b68407fab8
Merge #9150
9150: Unescape generated clippy lints r=lnicola a=Veykril



Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-06-05 18:16:57 +00:00
bors[bot]
ad9234fef2
Merge #9140
9140: feat: Render documentation for derive completion r=Veykril a=Veykril

![eEzGiq2wNa](https://user-images.githubusercontent.com/3757771/120847308-9c5a3300-c573-11eb-958d-e0f22f4757ed.gif)

Nothing fancy as all the std derives aren't really documented though maybe some 3rd party crates document them equally to their trait counterparts.

Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-06-05 17:23:40 +00:00
Lukas Wirth
fc06058a76 Unescape generated clippy lints 2021-06-05 19:14:53 +02:00
Lukas Wirth
5391f9c63c Support goto-definition for include macro paths 2021-06-05 19:04:50 +02:00
bors[bot]
5092d8c1ae
Merge #9147
9147: internal: enable proc macros and build scripts in cli r=flodiebold a=lnicola



Co-authored-by: Laurențiu Nicola <lnicola@dend.ro>
2021-06-05 12:29:52 +00:00
Laurențiu Nicola
18484365e6 Enable proc macros and build scripts by default in CLI 2021-06-05 15:20:41 +03:00
bors[bot]
4c54ec1c3c
Merge #9148
9148: minor: Prevent renaming of aliases on usages r=Veykril a=Veykril

Otherwise trying to rename a usage that goes through an alias will still rename the aliased item instead, cc https://github.com/rust-analyzer/rust-analyzer/issues/5671
bors r+

Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-06-05 11:16:46 +00:00
Lukas Wirth
d30f2d43db Prevent renaming of aliases on usages 2021-06-05 13:15:07 +02:00
bors[bot]
fec00f4e13
Merge #9146
9146: minor: Fix incorrect list nesting in format_like feature description r=Veykril a=Veykril

bors r+
Closes #6261

Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-06-05 10:44:36 +00:00
Lukas Wirth
abc941d2c8 Fix incorrect list nesting in format_like feature description 2021-06-05 12:43:45 +02:00
bors[bot]
15fe4e42bb
Merge #9145
9145: internal: Enable attribute macro expansion in `analysis-stats` r=flodiebold a=flodiebold

Before:
```
> $ rust-analyzer -q analysis-stats --with-proc-macro --load-output-dirs .
Database loaded:     19.08s, 277minstr
  crates: 34, mods: 688, decls: 13202, fns: 10412
Item Collection:     16.21s, 76ginstr
  exprs: 290580, ??ty: 2508 (0%), ?ty: 1814 (0%), !ty: 947
Inference:           27.46s, 108ginstr
Total:               43.67s, 184ginstr
```
After:
```
> $ ./target/release/rust-analyzer -q analysis-stats --with-proc-macro --load-output-dirs .
Database loaded:     1.09s, 277minstr
  crates: 34, mods: 688, decls: 14790, fns: 11006
Item Collection:     18.20s, 78ginstr
  exprs: 297826, ??ty: 493 (0%), ?ty: 558 (0%), !ty: 342
Inference:           28.34s, 111ginstr
Total:               46.54s, 190ginstr
```

Co-authored-by: Florian Diebold <flodiebold@gmail.com>
2021-06-05 09:32:40 +00:00
Florian Diebold
d174b919dc Enable attribute macro expansion in analysis-stats
Before:
```
> $ rust-analyzer -q analysis-stats --with-proc-macro --load-output-dirs .
Database loaded:     19.08s, 277minstr
  crates: 34, mods: 688, decls: 13202, fns: 10412
Item Collection:     16.21s, 76ginstr
  exprs: 290580, ??ty: 2508 (0%), ?ty: 1814 (0%), !ty: 947
Inference:           27.46s, 108ginstr
Total:               43.67s, 184ginstr
```
After:
```
> $ ./target/release/rust-analyzer -q analysis-stats --with-proc-macro --load-output-dirs .
Database loaded:     1.09s, 277minstr
  crates: 34, mods: 688, decls: 14790, fns: 11006
Item Collection:     18.20s, 78ginstr
  exprs: 297826, ??ty: 493 (0%), ?ty: 558 (0%), !ty: 342
Inference:           28.34s, 111ginstr
Total:               46.54s, 190ginstr
```
2021-06-05 11:29:24 +02:00
Lukas Wirth
544eca10d6 Complete third-party attributes 2021-06-04 21:07:19 +02:00
Lukas Wirth
7524850831 Render documentation for derive completion 2021-06-04 20:58:12 +02:00
bors[bot]
d647568db1
Merge #9141
9141: fix: Don't inline mutable locals in 'inline_local_variable' r=Veykril a=Veykril

Fixes #9139

Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-06-04 18:44:22 +00:00
Lukas Wirth
1bd04d9064 Don't inline mutable locals in 'inline_local_variable' 2021-06-04 20:43:48 +02:00
bors[bot]
98395f29a4
Merge #9138
9138: feat: Implement hover for lints r=Veykril a=Veykril

fixes https://github.com/rust-analyzer/rust-analyzer/issues/8857, fixes https://github.com/rust-analyzer/rust-analyzer/issues/3941

![URXBanNxYe](https://user-images.githubusercontent.com/3757771/120830905-4bd8da80-c55f-11eb-9f55-ff5a321726fa.gif)

We also generate the default lints(and lint groups 🎉) instead now by invoking `rustc -W help` and parsing the output from that.


Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-06-04 17:45:37 +00:00
Lukas Wirth
ae1c63fcdd Exclude crates/ide_db/src/helpers/generated_lints.rs from tidy::check_todo 2021-06-04 19:45:10 +02:00
Lukas Wirth
0c89f38378 Replace - with _ in generated lint names 2021-06-04 19:10:52 +02:00
Lukas Wirth
0b9ba4977e Generate default lint groups 2021-06-04 18:55:08 +02:00
Lukas Wirth
343df88ac7 Generate default lint completions 2021-06-04 18:35:19 +02:00
Lukas Wirth
5d17b6a687 Implement hover for lints 2021-06-04 17:03:18 +02:00
bors[bot]
92d91050c4
Merge #9137
9137: fix: fix incorrect "unresolved import" error when using derive helpers r=jonas-schievink a=jonas-schievink

Fixes https://github.com/rust-analyzer/rust-analyzer/issues/9133

cursed bug

bors r+

Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
2021-06-04 14:51:39 +00:00
Jonas Schievink
20de86d014 Return ReachedFixedPoint::No when resolving derive helper 2021-06-04 16:50:35 +02:00
bors[bot]
dceec3eb80
Merge #9136
9136: feat: Add function references hover action r=Veykril a=Veykril

![image](https://user-images.githubusercontent.com/3757771/120811670-8422ed80-c54c-11eb-87f5-dd65c1f8ef7d.png)
This is off by default as this can slow down hover messages significantly for very big projects I believe.
Fixes #6590
bors r+


Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-06-04 13:55:49 +00:00
Lukas Wirth
07394316ff Add function references hover action 2021-06-04 15:54:55 +02:00
bors[bot]
cd46255d7e
Merge #9135
9135: Reorganize inlay_hints tests r=Veykril a=Veykril

bors r+

Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-06-04 12:10:21 +00:00
Lukas Wirth
5f1fac44c5 Cleanup parameter_hint_heuristics inlay hints test 2021-06-04 14:09:20 +02:00
Lukas Wirth
b0f6d8868c Reorganize inlay_hints tests 2021-06-04 13:47:39 +02:00
bors[bot]
14153671ca
Merge #9128
9128: feat: expand procedural attribute macros r=jonas-schievink a=jonas-schievink

This adds experimental support for attribute macros. They can be enabled by setting `rust-analyzer.experimental.procAttrMacros` to `true`.

Known issues:
* Tokens aren't remapped, presumably because we edit the input syntax tree (this causes IDE features to not work inside items with attribute macros on them)
* Macro errors aren't reported correctly

Closes https://github.com/rust-analyzer/rust-analyzer/issues/8971
Fixes https://github.com/rust-analyzer/rust-analyzer/issues/8964 / https://github.com/la10736/rstest/issues/120
Fixes https://github.com/rust-analyzer/rust-analyzer/issues/2984
Fixes https://github.com/rust-analyzer/rust-analyzer/issues/5412
Fixes https://github.com/rust-analyzer/rust-analyzer/issues/6029
Fixes https://github.com/rust-analyzer/rust-analyzer/issues/6687

https://github.com/rust-analyzer/rust-analyzer/issues/6740 is still not fixed – we now expand `#[proc_macro_hack]`, but fail to expand the resulting `proc_macro_call!()` macro.

Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
2021-06-03 16:17:25 +00:00
Jonas Schievink
17565f4dea Set enable_proc_attr_macros in hir_ty TestDB 2021-06-03 18:11:33 +02:00
Jonas Schievink
d1c4d28eed Update list of built-in attributes 2021-06-03 18:09:21 +02:00
Jonas Schievink
9fdb8f9037 Make it opt-in 2021-06-03 18:09:21 +02:00