Commit graph

15629 commits

Author SHA1 Message Date
Jonas Schievink
6c6ae965ba Update remaining GitHub URLs 2022-07-08 15:44:49 +02:00
David Lattimore
6f819e30e4 Remove unnecessary unsafe from format_args expansion 2022-07-08 14:56:18 +10:00
bors
c296e77767 Auto merge of #12695 - xuhongxu96:fix-12140, r=jonas-schievink
Complete type param/associated type in trait generic arg per arg index

- Fix #12140
- Also fix tidy check does not work for marks in multiline
2022-07-06 23:58:52 +00:00
Hongxu Xu
3248601a03 fix default type param value position 2022-07-07 07:28:55 +08:00
Jonas Schievink
d2fd137252 Use SmallVec to slightly shrink ModPath size 2022-07-06 19:49:05 +02:00
Hongxu Xu
0360ed53cf check arg_idx >= n_params only if arg_idx >= n_required_params 2022-07-07 00:54:46 +08:00
Hongxu Xu
75fb3de310 Handle generic args per arg index
Add more test cases for generic args
2022-07-07 00:45:22 +08:00
Hongxu Xu
0f2eba54db Show only assoc type args in the correct arg pos 2022-07-06 22:58:27 +08:00
hi-rustin
b9ba9fab5a Add str_ref_to_string fix
Signed-off-by: hi-rustin <rustin.liu@gmail.com>
2022-07-05 22:47:18 +08:00
Hongxu Xu
441e659aa1 Complete associated type only in trait generic arg
Fix tidy check does not work for marks in multiline
2022-07-05 21:48:28 +08:00
hi-rustin
0d9737ac1c Fix project root assert
Signed-off-by: hi-rustin <rustin.liu@gmail.com>
2022-07-05 21:18:00 +08:00
Lukas Wirth
976d07e53e fix: Fix unresolved proc macro diagnostics pointing to macro expansions 2022-07-05 12:46:09 +02:00
bors
6edf624cbe Auto merge of #12690 - Veykril:inert-attrs, r=Veykril
internal: Update inert attribute list
2022-07-05 09:55:55 +00:00
Lukas Wirth
383ee6af5e internal: Update inert attribute list 2022-07-05 11:54:46 +02:00
Lukas Wirth
db49ac8734 internal: Record all macro definitions in ItemScope 2022-07-05 11:28:47 +02:00
Florian Diebold
ccf854bc2e Improve documentation for buildScripts.overrideCommand / checkOnSave.overrideCommand 2022-07-04 18:51:18 +02:00
bors
75b22326da Auto merge of #12681 - lnicola:bump-deps, r=lnicola
Bump deps
2022-07-03 07:25:03 +00:00
Laurențiu Nicola
78beb4c444 Bump chalk 2022-07-03 10:22:10 +03:00
Laurențiu Nicola
e05e6c60a7 Bump object 2022-07-03 10:14:48 +03:00
Laurențiu Nicola
5381811368 Bump tracing-subscriber 2022-07-03 10:12:58 +03:00
Laurențiu Nicola
9e7ca80c82 Bump cargo_metadata 2022-07-03 10:09:35 +03:00
Laurențiu Nicola
6669f388a2 Bump indexmap 2022-07-03 10:09:35 +03:00
Laurențiu Nicola
791f2a0bec Bump smallvec 2022-07-03 10:09:35 +03:00
Laurențiu Nicola
e6fcb23445 Bump either 2022-07-03 10:09:35 +03:00
Laurențiu Nicola
c7c314d462 Bump quote 2022-07-03 10:09:35 +03:00
Laurențiu Nicola
212f84ab46 Bump crossbeam-channel 2022-07-03 09:56:58 +03:00
Dorian Scheidt
e3940003a2 fix: Extract function from trait impl
This change fixes #10036, "Extract to function assist implements nonexistent
trait methods".

When we detect that the extraction is coming from within a trait impl, and that
a `self` param will be necessary, we adjust which `SyntaxNode` to `insert_after`,
and create a new empty `impl` block for the newly extracted function.
2022-07-02 15:00:02 -05:00
Dorian Scheidt
0039d6f731 fix: Extract Function produces duplicate fn names
This change fixes issue #10037, in more or less the most naive fashion
possible.

We continue to start with the hardcoded default of "fun_name", and now append a
counter to the end of it if that name is already in scope.

In the future, we can probably apply more heuristics here to wind up with more
useful names by default, but for now this resolves the immediate problem.
2022-07-02 14:24:41 -05:00
Ryo Yoshida
649e1f54cf
fix: report type mismatch on identifier in destructuring assignments 2022-07-03 03:29:15 +09:00
Ryo Yoshida
afdbd6cce2
fix: infer lhs first on ordinary assignment expressions 2022-07-03 03:29:02 +09:00
bors
d101439c77 Auto merge of #12627 - yue4u:fix/struct-variant-patterns, r=Veykril
fix: complete enum variants as patterns in pattern path

close #12593
2022-07-02 17:18:24 +00:00
a-kenji
f2963cf8ff fix: typos in hir-ty 2022-07-02 17:19:06 +02:00
bors
d4b79ad77b Auto merge of #12678 - Veykril:flyimport, r=Veykril
fix: Trigger flyimport completions in item lists again

Fixes https://github.com/rust-lang/rust-analyzer/issues/12656
2022-07-02 14:20:36 +00:00
Lukas Wirth
cd42b20ce3 fix: Trigger flyimport completions in item lists again 2022-07-02 16:20:26 +02:00
yue4u
ea7ea7079c fix: escape for enum variant 2022-07-02 23:17:29 +09:00
yue4u
622b516c74 fix: variants rendering in pattern path 2022-07-02 20:31:24 +09:00
Florian Diebold
9a12d0d6f2 Fix case of ignored/broken proc macro 2022-07-01 19:00:07 +02:00
Florian Diebold
e71519572c Add tests for #12669 2022-07-01 19:00:07 +02:00
bors
994f3cf74d Auto merge of #12636 - xuhongxu96:fix-12148, r=Veykril
complete raw identifier with "r#" prefix

Fix #12148

Escape Names and Paths used in `insert_text`/`insert_snippet` while rendering the completion items.
2022-07-01 14:55:51 +00:00
bors
ed44fe52e4 Auto merge of #12668 - Veykril:mac-source-map, r=Veykril
fix: Simplify macro statement expansion handling

I only meant to fix https://github.com/rust-lang/rust-analyzer/issues/12644 but that somehow turned into a rewrite of the statement handling ... at least this fixes a few more issues in the IDE layer now
2022-07-01 14:46:48 +00:00
Lukas Wirth
e5e5a0932d Fix blocks not considering stmt without semi as tails 2022-07-01 16:25:52 +02:00
Lukas Wirth
8e764a8bb1 fix: Fix attribute macros on assoc items being discarded with disabled proc macros 2022-07-01 16:21:21 +02:00
Lukas Wirth
58d5c69a63 Fix Expr::MacroStmts using wrong scopes 2022-07-01 15:34:29 +02:00
Lukas Wirth
9165e3b381 Update hir-ty test outputs 2022-07-01 15:21:55 +02:00
Lukas Wirth
531e152390 fix: Simplify macro statement expansion handling 2022-07-01 14:49:30 +02:00
bors
f8c416e1b9 Auto merge of #12650 - lowr:fix/12591, r=lnicola
fix: improve whitespace insertion in pretty printer

Fixes #12591

The `=>` token in the macro_rules! should be parsed as one fat arrow, but it ["requires a lot of changes in r-a"](143cc528b1), so I left it for the larger refactoring in the future and put a FIXME note.
2022-07-01 08:32:04 +00:00
Lukas Wirth
ddddca8717 fix: Fix flycheck sending cancel progress with no running process 2022-06-30 22:58:57 +02:00
bors
642084093a Auto merge of #12634 - iDawer:match-check.witnesses, r=flodiebold
feat: Show witnesses of non-exhaustiveness in `missing-match-arm` diagnostic

Shamelessly copied from rustc. Thus reporting format is same.

This extends public api  `hir::diagnostics::MissingMatchArms` with `uncovered_patterns: String` field. It does not expose data for implementing a quick fix yet.

-----
Worth to note: current implementation does not give a comprehensive list of missing patterns. Also mentioned in [paper](http://moscova.inria.fr/~maranget/papers/warn/warn.pdf):

> One may think that algorithm I should make an additional effort to provide more
> non-matching values, by systematically computing recursive calls on specialized
> matrices when possible, and by returning a list of all pattern vectors returned by
> recursive calls. We can first observe that it is not possible in general to supply the
> users with all non-matching values, since the signature of integers is (potentially)
> infinite.
2022-06-30 14:51:58 +00:00
iDawer
e417992674 Add static assertions for some unreachble paths 2022-06-30 18:36:05 +05:00
iDawer
461c0cc07a Correct wording 2022-06-30 17:19:03 +05:00
bors
7f9c054686 Auto merge of #12626 - CuriousCorrelation:fix/empty-reasons, r=flodiebold
fix: trailing ':' on empty inactive reasons

## Description
Fixes trailing ':' even when there is no explanation. e.g.
``` sh
code is inactive due to #[cfg] directives:
```
## Issue
Fixes: #12615
2022-06-30 10:19:21 +00:00
bors
2ff505ab48 Auto merge of #12428 - lowr:experimental/destructuring-assignment, r=flodiebold
feat: implement destructuring assignment

This is an attempt to implement destructuring assignments, or more specifically, type inference for [assignee expressions](https://doc.rust-lang.org/reference/expressions.html#place-expressions-and-value-expressions).

I'm not sure if this is the right approach, so I don't even expect this to be merged (hence the branch name 😉) but rather want to propose one direction we could choose. I don't mind getting merged if this is good enough though!

Some notes on the implementation choices:

- Assignee expressions are **not** desugared on HIR level unlike rustc, but are inferred directly along with other expressions. This matches the processing of other syntaxes that are desugared in rustc but not in r-a. I find this reasonable because r-a only needs to infer types and it's easier to relate AST nodes and HIR nodes, so I followed it.
- Assignee expressions obviously resemble patterns, so type inference for each kind of pattern and its corresponding assignee expressions share a significant amount of logic. I tried to reuse the type inference functions for patterns by introducing `PatLike` trait which generalizes assignee expressions and patterns.
  - This is not the most elegant solution I suspect (and I really don't like the name of the trait!), but it's cleaner and the change is smaller than other ways I experimented, like making the functions generic without such trait, or making them take `Either<ExprId, PatId>` in place of `PatId`.

in case this is merged:
Closes #11532
Closes #11839
Closes #12322
2022-06-30 09:14:12 +00:00
Ryo Yoshida
36d2b43dfd
fix: improve whitespace insertion in pretty printer 2022-06-28 20:44:55 +09:00
Florian Diebold
8b3ec12aac fix: Report proc macro errors in expressions correctly as well
They didn't have a krate before, resulting in the generic "proc macro
not found" error.

Also improve error messages a bit more.
2022-06-28 10:43:22 +02:00
Ryo Yoshida
80cc0ef1bc
Fix typo 2022-06-27 23:20:26 +09:00
Ryo Yoshida
393a18b8ce
fix: escape receiver texts in format string completion 2022-06-27 23:20:23 +09:00
Ryo Yoshida
491e6eaf9e
fix: escape ${receiver} when completing with custom snippets 2022-06-27 23:20:17 +09:00
bors
9eaf96c9ea Auto merge of #12643 - Veykril:macro-compl, r=Veykril
fix: Fix completions for locals not working properly inside macro calls
2022-06-27 12:40:46 +00:00
Lukas Wirth
bdbffdd463 fix: Fix completions for locals not working properly inside macro calls 2022-06-27 14:39:44 +02:00
bors
4c3954682d Auto merge of #12635 - antogilbert:tgt_feat, r=Veykril
Correct target_feature completion

I changed the `target_feature` to match the description given in #12616.
2022-06-27 12:28:36 +00:00
Manas
7f1fac7c26 fix: deduplicate cfg completions
cfg completions are duplicated if they are set with multiple values.
This patch deduplicates them.
2022-06-27 16:17:06 +05:30
Antonello Palazzi
bef89e95e7 Udate unit tests 2022-06-27 09:04:42 +01:00
bitgaoshu
dcb4837b2d WellFormed -> Holds 2022-06-26 23:09:06 +08:00
bitgaoshu
408fa148b9 add test for item same name 2022-06-26 22:48:26 +08:00
buffet
45b896002a Fix typo in build.rs 2022-06-26 10:09:45 +00:00
Hongxu Xu
f536766efb complete raw identifier with "r#" prefix 2022-06-26 14:45:30 +08:00
Antonello Palazzi
e4e2a46773 Correct target_feature completion 2022-06-26 00:50:41 +01:00
iDawer
fb6278e750 Reduce intermediate allocations while printing witnesses 2022-06-25 20:08:00 +05:00
bitgaoshu
0dbc091fee add test for suggest_name 2022-06-25 17:33:27 +08:00
bitgaoshu
82c1b313bc restore sth 2022-06-25 10:25:56 +08:00
bors
5bb123d970 Auto merge of #12520 - Veykril:flycheck-cancel, r=Veykril
internal: Bring back JodChild into flychecking for cancellation

cc https://github.com/rust-lang/rust-analyzer/pull/10517/files#r895241975
2022-06-24 17:42:00 +00:00
bitgaoshu
e3b1303c4f fix test in resolve_proc_macro: Foo is Owner 2022-06-25 01:02:39 +08:00
bitgaoshu
900b4208fd rename "trait_def" to "def_in_trait" 2022-06-24 23:04:35 +08:00
bitgaoshu
353829fc4e highlight: trait path 2022-06-24 23:04:35 +08:00
bitgaoshu
9ea8d5806d fix test in qualify_method: stay in trait path 2022-06-24 23:04:35 +08:00
bors
401a71d1d7 Auto merge of #12629 - flodiebold:proc-macro-error-improvement, r=Veykril
fix: Improve proc macro errors a bit

Distinguish between
 - there is no build data (for some reason?)
 - there is build data, but the cargo package didn't build a proc macro dylib
 - there is a proc macro dylib, but it didn't contain the proc macro we expected
 - the name did not resolve to any macro (this is now an
 unresolved_macro_call even for attributes)

I changed the handling of disabled attribute macro expansion to
immediately ignore the macro and report an unresolved_proc_macro,
because otherwise they would now result in loud unresolved_macro_call
errors. I hope this doesn't break anything.

Also try to improve error ranges for unresolved_macro_call / macro_error
by reusing the code for unresolved_proc_macro. It's not perfect but
probably better than before.
2022-06-24 12:27:59 +00:00
Florian Diebold
45fd5e697f Improve comments 2022-06-24 14:19:18 +02:00
Florian Diebold
c80c34867f Improve proc macro errors a bit
Distinguish between
 - there is no build data (for some reason?)
 - there is build data, but the cargo package didn't build a proc macro dylib
 - there is a proc macro dylib, but it didn't contain the proc macro we expected
 - the name did not resolve to any macro (this is now an
 unresolved_macro_call even for attributes)

I changed the handling of disabled attribute macro expansion to
immediately ignore the macro and report an unresolved_proc_macro,
because otherwise they would now result in loud unresolved_macro_call
errors. I hope this doesn't break anything.

Also try to improve error ranges for unresolved_macro_call / macro_error
by reusing the code for unresolved_proc_macro. It's not perfect but
probably better than before.
2022-06-24 13:45:19 +02:00
bitgaoshu
9e6bff79f4 fix some test due to resolve to where trait m impl 2022-06-24 19:15:16 +08:00
bitgaoshu
6ecabe352a functions resolve to impl 2022-06-24 19:11:35 +08:00
bors
434e718b67 Auto merge of #12605 - erhuve:fix/determine-doc-link-type-at-start, r=erhuve
fix: doc_links link type - Determine link type at start (fixes #12601)

fixes #12601
Looked like autolink/inline mismatch happened because end_link_type was parsed from the Text/Code events.
I changed it to be determined from the Start event, which should hopefully remain accurate while staying true to the cases where link type may need to be changed, according to the comment
```
// normally link's type is determined by the type of link tag in the end event,
// however in some cases we want to change the link type, for example,
// `Shortcut` type doesn't make sense for url links
```
Hopefully this is the desired behavior?
![Untitled](https://user-images.githubusercontent.com/59463268/174696581-3b1140a5-cdf0-4eda-9a11-ec648e4e7d21.gif)
2022-06-23 23:15:33 +00:00
Raymond Luo
5107123f9a clarify comment and add autolink test case 2022-06-23 19:02:30 -04:00
bors
32b40ded0f Auto merge of #12628 - Veykril:simplify, r=Veykril
internal: Simplify
2022-06-23 18:13:08 +00:00
Lukas Wirth
2642f64570 internal: Simplify 2022-06-23 20:08:29 +02:00
CuriousCorrelation
e0c17e8777 fix: trailing ':' on empty inactive reasons
Fixes: #12615
2022-06-23 22:10:27 +05:30
yue4u
472ae16bfb fix: completes non exhaustive variant within the defining crate 2022-06-24 00:00:51 +09:00
Florian Diebold
36fadc4224 Fix unstable feature use 2022-06-23 16:05:59 +02:00
Florian Diebold
f410fdf6e3 Add two more tests 2022-06-23 14:49:05 +02:00
Florian Diebold
29f01cd9d2 Various cleanups
- remove Valid, it serves no purpose and just obscures the diff
 - rename some things
 - don't use is_valid_candidate when searching for impl, it's not necessary
2022-06-23 14:38:28 +02:00
bitgaoshu
1064c7513a reformat code 2022-06-23 14:01:22 +02:00
bitgaoshu
1ef5e14c2c goto where trait method impl 2022-06-23 14:01:22 +02:00
Raymond Luo
96ff235770 condense matches on autolink 2022-06-22 22:07:26 -04:00
soruh
817082cad6 add doc strings to use_trivial_contructor.rs 2022-06-22 16:49:50 +02:00
soruh
f9379df630 add use_trivial_contructor.rs 2022-06-22 16:34:01 +02:00
soruh
f780145c4a apply suggestions 2022-06-22 16:29:59 +02:00
Raymond Luo
b7e3f525bd handle autolink as edge case 2022-06-20 23:15:27 -04:00
Raymond Luo
c6f776c5f9 determine doc link type from start instead of text or code 2022-06-20 21:10:45 -04:00
bors
6fc5c3cd21 Auto merge of #12604 - Veykril:completions, r=Veykril
internal: Simplify some completions
2022-06-20 19:56:05 +00:00
Lukas Wirth
7a0774defa internal: Simplify some completions 2022-06-20 21:55:33 +02:00
bors
312ac83caf Auto merge of #12599 - flodiebold:no-test-deps, r=flodiebold
fix: Only apply `cfg(test)` for local crates

Don't analyze dependencies with `test`; this should fix various cases where crates use `cfg(not(test))` and so we didn't find things.

"Local" here currently means anything that's not from the registry, so anything inside the workspace, but also path dependencies. So this isn't perfect, and users might still need to use `rust-analyzer.cargo.unsetTest` for these in some cases.
2022-06-20 18:42:48 +00:00
Florian Diebold
07d78b67cb Fix test 2022-06-20 20:34:08 +02:00
Lukas Wirth
8b078986dc Reimplement auto-ref completions for fields 2022-06-20 20:22:51 +02:00
Florian Diebold
05ca0a2377 Refactor a bit 2022-06-20 20:21:30 +02:00
Lukas Wirth
46d22719fc Remove pattern rendering hack 2022-06-20 20:16:40 +02:00
Florian Diebold
98a58114a4 Only apply cfg(test) for local crates
Don't analyze dependencies with `test`; this should fix various cases
where crates use `cfg(not(test))` and so we didn't find things.

"Local" here currently means anything that's not from the registry, so
anything inside the workspace, but also path dependencies. So this isn't
perfect, and users might still need to use
`rust-analyzer.cargo.unsetTest` for these in some cases.
2022-06-20 20:10:25 +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
iDawer
4ff9bedbed Display witnesses of non-exhaustive match
Reporting format follows rustc and shows at most three witnesses.
2022-06-20 15:48:09 +05: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
Lukas Wirth
309ecdd71c internal: NameRefKind classification is not optional 2022-06-18 08:58:47 +02:00
Lukas Wirth
0665428b4e minor: Simplify 2022-06-18 01:15:08 +02:00
Lukas Wirth
173bb10a76 internal: Split flyimport into its 3 applicable contexts 2022-06-18 00:47:28 +02: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
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
Lukas Wirth
531060f103 internal: Collapse completion ctx path qualifier and is_absolute_path into enum 2022-06-17 16:36:22 +02:00
Lukas Wirth
85363d18e8 Simplify 2022-06-17 16:22:51 +02: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
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
Lukas Wirth
59799312e2 Send a DidCancel event when restarting flychecks 2022-06-16 15:25:50 +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
Jeremy Banks
c32f133236 fix: inserted imports must come after a shebang if present 2022-06-15 19:42:43 +00:00
Jeremy Banks
f32ad8362f add failing test: inserts_after_shebang 2022-06-15 19:42:43 +00:00
Lukas Wirth
bc1aa93e7e Polish 2022-06-15 18:35:48 +02:00
Lukas Wirth
1dd2c50298 Update test outputs 2022-06-15 18:07:37 +02:00
Lukas Wirth
0e41d15b82 Use the correct crates proc-macro loading error message 2022-06-15 18:06:33 +02:00
Lukas Wirth
1d34cdcac0 Diagnose unresolved attribute proc-macros 2022-06-15 17:34:13 +02:00
Lukas Wirth
7d51fc4640 Show proc-macro loading errors in unresolved-proc-macro diagnostics 2022-06-15 17:34:01 +02:00
bors
15c63c4119 Auto merge of #12541 - Veykril:vs-reload, r=Veykril
fix: Clear proc-macro changed flag when reloading workspace
2022-06-15 12:29:34 +00:00
Lukas Wirth
664a751f2b fix: Clear proc-macro changed flag when reloading workspace 2022-06-15 14:29:13 +02:00
soruh
f52f5fed11 replace TODO with FIXME 2022-06-15 03:16:59 +02:00
soruh
dd0981e3bc fix CI 2022-06-15 03:07:42 +02:00
soruh
6a28cccaee remove dbg 2022-06-15 03:00:43 +02:00
soruh
8cac16b62e cleanup 2022-06-15 02:59:32 +02:00
soruh
8e3bbaa57b instanciate_empty_structs 2022-06-15 02:41:28 +02:00
Hongxu Xu
549c810436 revert hir-def lib.rs 2022-06-15 07:48:34 +08:00
Hongxu Xu
8805a768d4 check if the container is trait and inherit the visibility 2022-06-15 07:47:06 +08:00
Hongxu Xu
070456838d remove inherit_visibility test case in item_tree 2022-06-14 23:24:48 +08:00
Hongxu Xu
ded412d56b implement inherited_visibility in collector 2022-06-14 23:23:15 +08:00
Hongxu Xu
3f60e71a12 remove inherited_visibility in lower.rs 2022-06-14 21:44:07 +08:00
Hongxu Xu
d7eebd9706 add test cases to complete fn generated by macro in pub trait 2022-06-14 21:41:09 +08:00
Lukas Wirth
325ceaef19 fix: Check for the correct proc-macro settings in missing proc-macro diagnostics 2022-06-14 11:00:06 +02:00
Lukas Wirth
6438ef9aa3 internal: Bring back JodChild into flychecking for cancellation 2022-06-13 13:51:10 +02:00
bors
7db73875ac Auto merge of #12519 - Veykril:hover-assoc, r=Veykril
feat: On assoc item name hover, render trait decl docs
2022-06-13 09:58:04 +00:00
Lukas Wirth
9b9c13fc40 feat: On assoc item name hover, render trait decl docs 2022-06-13 11:57:33 +02:00
bors
366bd7242e Auto merge of #12515 - Veykril:rustc-proc-macros, r=Veykril
fix: Pass the build data to rustc_private crates

With this all proc-macros should resolve in rustc now when setting up the build script running command properly.
2022-06-12 17:35:55 +00:00
Lukas Wirth
10e9f47dce fix: Pass the build data to rustc_private crates 2022-06-12 19:29:45 +02:00
Lukas Wirth
0e4eb647f6 More precise proc-macro errors 2022-06-12 18:44:46 +02:00
bors
4f2a67b26f Auto merge of #12513 - Veykril:ty-utils, r=Veykril
internal: Simplify `hir_ty::utils`
2022-06-12 14:08:08 +00:00
Lukas Wirth
9153f17382 internal: Simplify hir_ty::utils 2022-06-12 16:07:08 +02:00
bors
d513f657a3 Auto merge of #12509 - Veykril:ty-utils, r=Veykril
internal: Remove `Generics::type_iter` in favor of `Generics::iter`
2022-06-12 12:40:57 +00:00
Lukas Wirth
7a0ab1358c internal: Remove Generics::type_iter in favor of Generics::iter 2022-06-12 14:40:37 +02:00
bors
eacade27ce Auto merge of #12455 - bitgaoshu:fix_12441, r=flodiebold
fix: #12441 False-positive type-mismatch error with generic future

I think the reason is same with #11815.
add ```Sized``` bound for ```AsyncBlockTypeImplTrait```.
2022-06-12 09:01:00 +00:00
bors
604b1c8409 Auto merge of #12508 - Veykril:req-retry, r=Veykril
fix: Don't respond to cancelled requests when retrying them

Fixes https://github.com/rust-lang/rust-analyzer/issues/12482
2022-06-12 00:56:52 +00:00
Lukas Wirth
ad109f7f0a fix: Don't respond to cancelled requests when retrying them 2022-06-12 02:56:19 +02:00
bors
37b01f9f39 Auto merge of #12504 - rust-lang:Veykril-patch-1, r=Veykril
fix: Fix config patching for callable snippets

Closes https://github.com/rust-lang/rust-analyzer/issues/12498
2022-06-11 11:41:26 +00:00
Lukas Wirth
a7a1a83463
fix: Fix config patching for callable snippets 2022-06-11 13:41:06 +02:00
bors
5b746ec590 Auto merge of #12481 - XFFXFF:add_label_to_loop, r=Veykril
assist: add label to loop

closes: #12392

I changed `'loop` to `'l`, as `cargo check` says `'loop` is an invalid label name.
2022-06-11 11:34:08 +00:00
bors
ba329913fa Auto merge of #12449 - Veykril:version, r=Veykril
Bring the version command output in line with other rust tools

Inspired by how cargo handles it
Fixes https://github.com/rust-lang/rust-analyzer/issues/12280
![image](https://user-images.githubusercontent.com/3757771/171680176-236451ee-2c6c-449f-8aa5-4a047e8cc907.png)
2022-06-10 23:35:38 +00:00
XFFXFF
e29a6780b1 restrict the assist so that it only appears if the cursor is on the loop keyword 2022-06-11 07:11:56 +08:00
XFFXFF
fac4d28012 change 'loop to 'l, as 'loop is not a valid label name 2022-06-11 07:11:56 +08:00
XFFXFF
0121cc1e29 make generated test pass and make tidy happy 2022-06-11 07:11:56 +08:00
XFFXFF
bb62180714 add more tests and some doc 2022-06-11 07:11:56 +08:00
XFFXFF
872536821c Make add_label_to_loop basically work 2022-06-11 07:11:56 +08:00
bors
9ef01d0895 Auto merge of #12490 - yue4u:fix/show-enum-in-fresh-use-tree, r=Veykril
fix: complete non-std enum at the start of `use` completions

close: #12421
2022-06-10 20:33:17 +00:00
bors
7b663a3a4a Auto merge of #12464 - harpsword:fix-inline-variable-mismatched-type, r=Veykril
feat: fix inline variable produce mismatched type

wrap reference for RefExpr initializer to fix #12453
2022-06-10 20:24:06 +00:00
bors
0bbead9fa0 Auto merge of #12473 - yue4u:fix/no-enum-parens-in-use, r=Veykril
fix: avoid adding enum parens in use path

close #12420
2022-06-10 20:03:29 +00:00
bors
e9d3fe0484 Auto merge of #12502 - Veykril:deps, r=Veykril
internal: Bump Dependencies
2022-06-10 19:51:04 +00:00
Lukas Wirth
76ae5434fa internal: Bump Dependencies 2022-06-10 17:30:02 +02:00
bors
f58c26e0ba Auto merge of #12501 - Veykril:dashmap, r=Veykril
internal: Update dashmap and freeze its version
2022-06-10 14:20:46 +00:00
Lukas Wirth
0cf677ab42 internal: Update dashmap and freeze its version 2022-06-10 16:19:52 +02:00
yue4u
2942863709 feat: append :: after 2022-06-09 16:45:46 +09:00
bors
79a4a464b0 Auto merge of #12487 - lukechu10:master, r=lnicola
minor: hide param inlay hint when argument is fn-like macro with similar name

Closes #12486
2022-06-08 14:55:17 +00:00
bors
b967f1797c Auto merge of #12493 - bjorn3:fix_warnings, r=lnicola
Fix a couple of weak warnings found by rust-analyzer itself
2022-06-08 14:46:40 +00:00
Luke Chu
6079eeb1bf Hide param inlay hint when argument is fn-like macro with similar name 2022-06-08 14:37:57 +00:00
bjorn3
c81608c6d2 Fix a couple of weak warnings found by rust-analyzer itself 2022-06-08 14:35:11 +00:00
bjorn3
f9e1ff6846 Add doc comment 2022-06-08 14:31:36 +00:00
bjorn3
c6827e2f47 Rustfmt 2022-06-08 14:22:17 +00:00
bjorn3
a07b3103b1 Add proc macro ABI for rustc 1.63 2022-06-08 13:41:10 +00:00
yue4u
55bc693356 fix: show non-std enum in a fresh use tree completion 2022-06-08 20:55:16 +09:00
KOLANICH
b3d2012659 Remove the unneeded destructuring assignment in run in project-model/src/build_scripts.rs 2022-06-06 14:02:34 +03:00
Lukas Wirth
0be31d945e fix: Fix trait impl completions using wrong insert position 2022-06-05 20:29:36 +02:00
yue4u
11693dad88 fix: avoid adding enum parens in use 2022-06-06 01:34:01 +09:00
bors
6d3396a492 Auto merge of #12466 - lnicola:worker-thread-stack, r=lnicola
Increase worker thread stack and name them

CC #11370
2022-06-05 07:59:42 +00:00
Lukas Wirth
d38b7b88c6 minor: Don't log cancelled diagnostics 2022-06-05 01:38:46 +02:00
Lukas Wirth
fbffe73612 fix: Fix match to if let assist for wildcard pats 2022-06-05 01:02:24 +02:00
Laurențiu Nicola
0b9cd8a468 Increase worker thread stack and name them 2022-06-04 20:48:51 +03:00
Lukas Wirth
62fede212a Only record build script outputs when the output has been changed 2022-06-04 15:04:56 +02:00
harpsword
061c5ef075 feat: fix inline variable produce mismatched type
wrap reference for RefExpr initializer
2022-06-04 17:07:28 +08:00
bors
312913a640 Auto merge of #12461 - Veykril:completions, r=Veykril
Move trait_impl completion analysis into CompletionContext
2022-06-03 18:49:37 +00:00
Lukas Wirth
a2a74bf278 Remove some of the unnecessary helpfer functions from CompletionContext 2022-06-03 20:49:25 +02:00
Lukas Wirth
a0c1816e3a Simplify 2022-06-03 19:55:30 +02:00
Lukas Wirth
98c0578f15 Move trait_impl completion analysis into CompletionContext 2022-06-03 19:49:02 +02:00
bors
d06d0f8774 Auto merge of #12459 - Veykril:completions, r=Veykril
internal: Clean up keyword completion handling

https://github.com/rust-lang/rust-analyzer/issues/12144
2022-06-03 15:20:30 +00:00
bors
d0a7ad4a7f Auto merge of #12457 - Veykril:logging, r=Veykril
internal: Don't log default build script outputs
2022-06-03 15:11:02 +00:00
bors
43d9c3f649 Auto merge of #12460 - Veykril:move-guard, r=Veykril
minor: Reduce move-guard trigger range
2022-06-03 15:00:26 +00:00
Lukas Wirth
b34e27d25e minor: Reduce move-guard trigger range 2022-06-03 17:00:03 +02:00
Lukas Wirth
d0e3114441 internal: Don't log default build script outputs 2022-06-03 16:46:16 +02:00
Lukas Wirth
2a60b8452e Deduplicate 2022-06-03 16:33:37 +02:00
Lukas Wirth
522f66545f Remove prev-sibling completion machinery 2022-06-03 16:25:37 +02:00
Lukas Wirth
6550a241fb More precise where keyword completions 2022-06-03 16:11:26 +02:00
Lukas Wirth
c522669f00 Remove dead code 2022-06-03 15:46:17 +02:00
Lukas Wirth
c5dcc77b40 Fix visibility mods not being completed for field defs 2022-06-03 15:42:28 +02:00
Lukas Wirth
519ac81b57 internal: Move most remaining keyword completions to item list completions 2022-06-03 15:15:21 +02:00
bors
58b6d46d5a Auto merge of #12333 - nolanderc:order-import-assist, r=Veykril
Order auto-imports by relevance

Fixes #10337.

Basically we sort the imports according to how "far away" the imported item is from where we want to import it to. This change makes it so that imports from the current crate are sorted before any third-party crates. Additionally, we make an exception for builtin crates (`std`, `core`, etc.) so that they are sorted before any third-party crates.

There are probably other heuristics that should be added to improve the experience (such as preferring imports that are common elsewhere in the same crate, and ranking crates depending on the dependency graph). However, I think this is a first good step.

PS. This is my first time contributing here, so please be gentle if I have missed something obvious :-)
2022-06-03 07:49:59 +00:00
bors
ea15e1000f Auto merge of #12452 - iDawer:assist.merge_selected_imports, r=Veykril
feature: `Merge imports` assist can merge multiple selected imports.

The selected imports have to have a common prefix in paths.

Select imports or use trees to merge:
```rust
$0use std::fmt::Display;
use std::fmt::Debug;
use std::fmt::Write;$0
```
Apply `Merge imports`:
```rust
use std::fmt::{Display, Debug, Write};
```

Closes #12426
2022-06-03 07:40:34 +00:00
bors
29fae10345 Auto merge of #12451 - TimNN:double-dollar, r=Veykril
feat: Support `$$` in macros.

The implementation mirrors what `rustc` currently does [1]. Part of #11952.

\[1]: 0595ea1d12/compiler/rustc_expand/src/mbe/quoted.rs (L230-L241)
2022-06-03 07:23:48 +00:00
Laurențiu Nicola
7066b8e0ca Shorten main thread name 2022-06-03 07:27:48 +03:00
bitgaoshu
1a97ab34db fix: #12441 False-positive type-mismatch error with generic future 2022-06-03 10:47:41 +08:00
Tim Neumann
40bfb29e50 feat: Support $$ in macros.
The implementation mirrors what `rustc` currently does [1]. Part of #11952.

[1]: 0595ea1d12/compiler/rustc_expand/src/mbe/quoted.rs (L230-L241)
2022-06-02 21:48:28 +02:00
iDawer
ea8899a445 Allow merging of multiple selected imports.
The selected imports have to have a common prefix in paths.

Before
```rust
$0use std::fmt::Display;
use std::fmt::Debug;$0
```
After
```rust
use std::fmt::{Display, Debug};
```
2022-06-02 23:15:55 +05:00
Lukas Wirth
a2a3ea86ea Bring the version command output in line with other rust tools 2022-06-02 18:36:02 +02:00
XFFXFF
df67bbdcb3 fix: parsing of ? opt-out trait bounds
thanks to Veykril
2022-06-02 21:30:18 +08:00
bors
2f0814ea35 Auto merge of #12347 - feniljain:fix_extract_module, r=Veykril
fix(extract_module) resolving import panics and improve import resolution

- Should solve #11766
- While adding a test case for this issue, I observed another issue:
For this test case:
```rust
            mod x {
                pub struct Foo;
                pub struct Bar;
            }

            use x::{Bar, Foo};

            $0type A = (Foo, Bar);$0
```
extract module should yield this:

```rust
            mod x {
                pub struct Foo;
                pub struct Bar;
            }

            use x::{};

            mod modname {
                use super::Bar;

                use super::Foo;

                pub(crate) type A = (Foo, Bar);
            }
```

instead it gave:

```rust
            mod x {
                pub struct Foo;
                pub struct Bar;
            }

            use x::{};

            mod modname {
                use x::Bar;

                use x::Foo;

                pub(crate) type A = (Foo, Bar);
            }
```

So fixed this problem with second commit
2022-06-02 12:37:17 +00:00
bors
6f7c5589ab Auto merge of #12443 - Veykril:fmtfix, r=Veykril
minor: Fix rustfmt failing on main_loop.rs
2022-06-01 19:23:22 +00:00
Lukas Wirth
343562c54d minor: Fix rustfmt failing on main_loop.rs 2022-06-01 21:20:54 +02:00
Maan2003
bad931116e
fix(diagnostic): Don't remove diagnostic with empty message
Use " " as message if it is empty
2022-06-01 18:38:53 +05:30
bors
4f5c7aafff Auto merge of #12431 - Veykril:request-retry, r=Veykril
fix: Fix completions disappearing when typing two keys in quick succession

With this PR we now retry requests if they get cancelled due to document changes.

This fixes the completions problem we have where completions seem to randomly disappear, see https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Frust-analyzer/topic/Completions.20not.20always.20appearing

Fixes https://github.com/rust-lang/rust-analyzer/issues/10187
Fixes https://github.com/rust-lang/rust-analyzer/issues/7560
Fixes https://github.com/rust-lang/rust-analyzer/issues/12153
2022-06-01 10:18:50 +00:00
Lukas Wirth
d88ae66ed9 Sync handlers cannot be cancelled 2022-06-01 12:18:15 +02:00
Lukas Wirth
e2da967578 fix: Fix completions disappearing when typing two keys in quick succession 2022-06-01 00:20:47 +02:00
bors
e25cbf8584 Auto merge of #12430 - Veykril:completions, r=Veykril
minor: Remove unused code
2022-05-31 18:22:41 +00:00
Lukas Wirth
1234d8647f minor: Remove unused code 2022-05-31 20:21:50 +02:00
Ryo Yoshida
b7a4175cbb
Implement type inference for assignee expressions 2022-06-01 01:28:12 +09:00
Ryo Yoshida
62d6b5a594
Generalize some inference functions for patterns 2022-06-01 01:22:11 +09:00
Ryo Yoshida
c1c867506b
Add Expr::Underscore 2022-06-01 01:21:57 +09:00
bors
c2099fe941 Auto merge of #12336 - bitgaoshu:mismatch, r=flodiebold
fix: #12267  type-mismatch when using equals w/ a trait bound
2022-05-31 09:48:54 +00:00
feniljain
25f3e7a33c fix: float display impl 2022-05-31 10:13:03 +05:30
feniljain
8a1ef52f5c fix(extract_module): Remove redundancy causing else, and also add import fix loop for names 2022-05-31 09:51:42 +05:30