Lukas Wirth
8b078986dc
Reimplement auto-ref completions for fields
2022-06-20 20:22:51 +02:00
Lukas Wirth
46d22719fc
Remove pattern rendering hack
2022-06-20 20:16:40 +02:00
Lukas Wirth
06ee4d6222
fix: Fix auto-ref completions inserting into wrong locations
2022-06-20 18:59:57 +02:00
Lukas Wirth
1f028403cd
fix: Don't trigger pattern completions when typing a wildcard pattern
2022-06-20 18:03:09 +02:00
Lukas Wirth
6e9c963348
internal: Lift out IdentContext from CompletionContext
2022-06-20 17:41:04 +02:00
Lukas Wirth
bcf10cde13
internal: Remove previous_token
field from CompletionContext
2022-06-20 15:07:48 +02:00
Lukas Wirth
90483321ee
Remove some usages of Completions::add_resolution
2022-06-20 14:47:30 +02:00
Lukas Wirth
7685245282
Even more completion context filtering
2022-06-20 14:23:46 +02:00
Lukas Wirth
ce5859e387
Lift out PathKind variant fields into structs
2022-06-20 13:29:13 +02:00
Lukas Wirth
5c69df93df
Split remaining completion calls on the context kinds
2022-06-20 13:17:30 +02:00
bors
eb9b360752
Auto merge of #12584 - Veykril:attr-diag, r=Veykril
...
fix: attribute macros not being properly diagnosed
Closes https://github.com/rust-lang/rust-analyzer/issues/12582
2022-06-18 22:38:04 +00:00
Lukas Wirth
013c6a3f75
fix: attribute macros not being properly diagnosed
2022-06-19 00:37:37 +02:00
bors
817f46bc6c
Auto merge of #12580 - Veykril:completion, r=Veykril
...
internal: Move more things out of `CompletionContext::function_def` into more specific parts
2022-06-18 09:21:13 +00:00
Lukas Wirth
f271b18129
Consider walking up macro expansions when searching for surrounding entities in completion analysis
2022-06-18 11:19:36 +02:00
Lukas Wirth
c1446a2743
Move CompletionContext::impl_def
into corresponding entities
2022-06-18 10:45:53 +02:00
Lukas Wirth
83e8f3ac30
Move CompletionContext::incomplete_let
into PathKind::Expr
2022-06-18 10:19:04 +02:00
bors
7a87f810ca
Auto merge of #12576 - harpsword:fold_range_non_block_match_arm, r=Veykril
...
feat: add fold range for multi line match arm list
fix : #11893
2022-06-18 08:10:31 +00:00
harpsword
3a78cc5e67
feat: add fold range for multi line match arm list
2022-06-18 16:05:56 +08:00
Lukas Wirth
7369e5120d
Move CompletionContext::function_def
into PathKind::Expr
2022-06-18 09:54:03 +02:00
bors
b1f9efa65c
Auto merge of #12577 - Veykril:completion, r=Veykril
...
internal: NameRefKind classification is not optional
2022-06-18 06:59:12 +00:00
Lukas Wirth
309ecdd71c
internal: NameRefKind classification is not optional
2022-06-18 08:58:47 +02:00
bors
12dd81092e
Auto merge of #12574 - Veykril:completion, r=Veykril
...
minor: Simplify
2022-06-17 23:15:37 +00:00
Lukas Wirth
0665428b4e
minor: Simplify
2022-06-18 01:15:08 +02:00
bors
69f30964ea
Auto merge of #12573 - Veykril:completion, r=Veykril
...
internal: Split flyimport into its 3 applicable contexts
2022-06-17 22:48:14 +00:00
Lukas Wirth
173bb10a76
internal: Split flyimport into its 3 applicable contexts
2022-06-18 00:47:28 +02:00
bors
09ac44c078
Auto merge of #12570 - Veykril:completion, r=Veykril
...
Only run completion functions if their corresponding context is active
2022-06-17 22:26:50 +00:00
Lukas Wirth
00fdb4a3d8
Only run completion functions if their corresponding context is active
2022-06-17 23:36:39 +02:00
Lukas Wirth
d97a8ee865
Remove superfluous early returns
2022-06-17 17:49:25 +02:00
bors
e7a0088b2f
Auto merge of #12565 - Veykril:completion, r=Veykril
...
internal: More completion refactors
2022-06-17 15:32:32 +00:00
Lukas Wirth
85b68b1f7d
Inline PathQualifierCtx
2022-06-17 17:27:12 +02:00
Lukas Wirth
d6f161ffa9
internal: Collapse lift is_infer_qualifier into Qualified
variant
2022-06-17 17:15:29 +02:00
Lukas Wirth
2f2ea77d88
Move existing_derives into PathKind::Derive
2022-06-17 16:56:21 +02:00
bors
bea4ba08e0
Auto merge of #12564 - Veykril:completion, r=Veykril
...
internal: Collapse completion ctx path `qualifier` and `is_absolute_path` into enum
2022-06-17 14:38:44 +00:00
Lukas Wirth
531060f103
internal: Collapse completion ctx path qualifier and is_absolute_path into enum
2022-06-17 16:36:22 +02:00
bors
9c0b7277a6
Auto merge of #12563 - Veykril:completion, r=Veykril
...
internal: Simplify
2022-06-17 14:28:52 +00:00
Lukas Wirth
85363d18e8
Simplify
2022-06-17 16:22:51 +02:00
bors
a69b17be2e
Auto merge of #12562 - Veykril:completion, r=Veykril
...
Split completion context module into definitions and analysis parts
2022-06-17 13:19:45 +00:00
Lukas Wirth
f35a9a1dcc
Split out tests
2022-06-17 15:19:09 +02:00
Lukas Wirth
a2537e591a
Split completion context module into definitions and analysis parts
2022-06-17 15:16:20 +02:00
bors
6269137760
Auto merge of #12560 - Veykril:completion, r=Veykril
...
internal: More completions refactoring
This gets rid of the remaining `ImmediateLocation` bits
2022-06-17 13:10:05 +00:00
Lukas Wirth
f201a40492
Remove ImmediateLocation in favor of PathKind::Type
2022-06-17 15:09:48 +02:00
Lukas Wirth
6b246292ca
Move more ImmediateLocation::TypeAnnotation into PathKind::Type
2022-06-17 11:31:36 +02:00
Lukas Wirth
6e07b17f69
Introduce NameRefKind for completions
2022-06-17 10:45:19 +02:00
bors
7322a982f9
Auto merge of #12554 - XFFXFF:fix_11959, r=Veykril
...
fix: local items should not be completed in parent signature
fixes #11959
> We get a Bar completion for the following snippet which is wrong as the item is not visible in that position.
> ``` rust
> fn foo() -> $0 {
> struct Bar;
> }
> ```
I investigated the problem and found that the scope of the cursor offset, also `CompletionContext.scope` is the body of the function
2022-06-16 12:48:33 +00:00
XFFXFF
6df969f5f4
the offset used for the completion cursor should always be relative to the original file and not to the marco file
2022-06-16 20:34:37 +08:00
bors
7ade4d49fc
Auto merge of #12517 - xuhongxu96:master, r=Veykril
...
fix methods in pub trait generated by macro cannot be completed
Fix #12483
Check if the container is trait and inherit the visibility to associate items during collection.
2022-06-16 09:14:09 +00:00
XFFXFF
fbf8e12234
the scope of the return type is not the body of the function
2022-06-16 16:24:18 +08:00
Hongxu Xu
534d71a852
disable private editable in TEST_CONFIG by default
...
adjust test_visibility_filter test case
2022-06-16 08:52:57 +08:00
bors
519d7484f3
Auto merge of #12545 - jeremyBanks:shebangs, r=Veykril
...
fix: inserted imports must come after a shebang if present
The current `insert_use` logic adds the first `use` item near the beginning of the file, only skipping past comments and whitespace. However, it does not skip leading [shebang lines](https://en.wikipedia.org/wiki/Shebang_\(Unix\) ). This can produce a syntax error, as shebangs are only accepted (ignored) on the first line of the file.
### Before Insertion (valid syntax)
```rust
#!/usr/bin/env rust
fn main() {}
```
### After Insertion (invalid syntax)
```rust
use foo::bar::Baz;
#!/usr/bin/env rust
fn main() {}
```
Rust analyzer's grammar is already shebang-aware, so this PR just adds that to the array of SyntaxKinds that are skipped past when looking for an insertion location, and adds a corresponding test case.
2022-06-15 20:01:37 +00:00
Jeremy Banks
c32f133236
fix: inserted imports must come after a shebang if present
2022-06-15 19:42:43 +00:00