]> git.lizzy.rs Git - rust.git/log
rust.git
2 years agoAuto merge of #12581 - lnicola:changelog-number, r=lnicola
bors [Sun, 19 Jun 2022 16:00:33 +0000 (16:00 +0000)]
Auto merge of #12581 - lnicola:changelog-number, r=lnicola

internal: Handle fractional release numbers in changelog naming

2 years agoAuto merge of #12584 - Veykril:attr-diag, r=Veykril
bors [Sat, 18 Jun 2022 22:38:04 +0000 (22:38 +0000)]
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

2 years agofix: attribute macros not being properly diagnosed
Lukas Wirth [Sat, 18 Jun 2022 22:37:37 +0000 (00:37 +0200)]
fix: attribute macros not being properly diagnosed

2 years agointernal: Handle fractional release numbers in changelog naming
Laurențiu Nicola [Sat, 18 Jun 2022 14:00:28 +0000 (17:00 +0300)]
internal: Handle fractional release numbers in changelog naming

2 years agoAuto merge of #12580 - Veykril:completion, r=Veykril
bors [Sat, 18 Jun 2022 09:21:13 +0000 (09:21 +0000)]
Auto merge of #12580 - Veykril:completion, r=Veykril

internal: Move more things out of `CompletionContext::function_def` into more specific parts

2 years agoConsider walking up macro expansions when searching for surrounding entities in compl...
Lukas Wirth [Sat, 18 Jun 2022 09:19:36 +0000 (11:19 +0200)]
Consider walking up macro expansions when searching for surrounding entities in completion analysis

2 years agoMove `CompletionContext::impl_def` into corresponding entities
Lukas Wirth [Sat, 18 Jun 2022 08:45:53 +0000 (10:45 +0200)]
Move `CompletionContext::impl_def` into corresponding entities

2 years agoMove `CompletionContext::incomplete_let` into `PathKind::Expr`
Lukas Wirth [Sat, 18 Jun 2022 08:18:56 +0000 (10:18 +0200)]
Move `CompletionContext::incomplete_let` into `PathKind::Expr`

2 years agoAuto merge of #12576 - harpsword:fold_range_non_block_match_arm, r=Veykril
bors [Sat, 18 Jun 2022 08:10:31 +0000 (08:10 +0000)]
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

2 years agofeat: add fold range for multi line match arm list
harpsword [Sat, 9 Apr 2022 05:44:41 +0000 (13:44 +0800)]
feat: add fold range for multi line match arm list

2 years agoMove `CompletionContext::function_def` into `PathKind::Expr`
Lukas Wirth [Sat, 18 Jun 2022 07:54:03 +0000 (09:54 +0200)]
Move `CompletionContext::function_def` into `PathKind::Expr`

2 years agoAuto merge of #12577 - Veykril:completion, r=Veykril
bors [Sat, 18 Jun 2022 06:59:12 +0000 (06:59 +0000)]
Auto merge of #12577 - Veykril:completion, r=Veykril

internal: NameRefKind classification is not optional

2 years agointernal: NameRefKind classification is not optional
Lukas Wirth [Sat, 18 Jun 2022 06:58:47 +0000 (08:58 +0200)]
internal: NameRefKind classification is not optional

2 years agoAuto merge of #12574 - Veykril:completion, r=Veykril
bors [Fri, 17 Jun 2022 23:15:37 +0000 (23:15 +0000)]
Auto merge of #12574 - Veykril:completion, r=Veykril

minor: Simplify

2 years agominor: Simplify
Lukas Wirth [Fri, 17 Jun 2022 23:15:08 +0000 (01:15 +0200)]
minor: Simplify

2 years agoAuto merge of #12573 - Veykril:completion, r=Veykril
bors [Fri, 17 Jun 2022 22:48:14 +0000 (22:48 +0000)]
Auto merge of #12573 - Veykril:completion, r=Veykril

internal: Split flyimport into its 3 applicable contexts

2 years agointernal: Split flyimport into its 3 applicable contexts
Lukas Wirth [Fri, 17 Jun 2022 22:47:28 +0000 (00:47 +0200)]
internal: Split flyimport into its 3 applicable contexts

2 years agoAuto merge of #12570 - Veykril:completion, r=Veykril
bors [Fri, 17 Jun 2022 22:26:50 +0000 (22:26 +0000)]
Auto merge of #12570 - Veykril:completion, r=Veykril

Only run completion functions if their corresponding context is active

2 years agoOnly run completion functions if their corresponding context is active
Lukas Wirth [Fri, 17 Jun 2022 21:36:39 +0000 (23:36 +0200)]
Only run completion functions if their corresponding context is active

2 years agoRemove superfluous early returns
Lukas Wirth [Fri, 17 Jun 2022 15:49:25 +0000 (17:49 +0200)]
Remove superfluous early returns

2 years agoAuto merge of #12565 - Veykril:completion, r=Veykril
bors [Fri, 17 Jun 2022 15:32:32 +0000 (15:32 +0000)]
Auto merge of #12565 - Veykril:completion, r=Veykril

internal: More completion refactors

2 years agoInline PathQualifierCtx
Lukas Wirth [Fri, 17 Jun 2022 15:27:12 +0000 (17:27 +0200)]
Inline PathQualifierCtx

2 years agointernal: Collapse lift is_infer_qualifier into `Qualified` variant
Lukas Wirth [Fri, 17 Jun 2022 15:15:29 +0000 (17:15 +0200)]
internal: Collapse lift is_infer_qualifier into `Qualified` variant

2 years agoMove existing_derives into PathKind::Derive
Lukas Wirth [Fri, 17 Jun 2022 14:56:21 +0000 (16:56 +0200)]
Move existing_derives into PathKind::Derive

2 years agoAuto merge of #12564 - Veykril:completion, r=Veykril
bors [Fri, 17 Jun 2022 14:38:44 +0000 (14:38 +0000)]
Auto merge of #12564 - Veykril:completion, r=Veykril

internal: Collapse completion ctx path `qualifier` and `is_absolute_path` into enum

2 years agointernal: Collapse completion ctx path qualifier and is_absolute_path into enum
Lukas Wirth [Fri, 17 Jun 2022 14:36:22 +0000 (16:36 +0200)]
internal: Collapse completion ctx path qualifier and is_absolute_path into enum

2 years agoAuto merge of #12563 - Veykril:completion, r=Veykril
bors [Fri, 17 Jun 2022 14:28:52 +0000 (14:28 +0000)]
Auto merge of #12563 - Veykril:completion, r=Veykril

internal: Simplify

2 years agoSimplify
Lukas Wirth [Fri, 17 Jun 2022 14:22:51 +0000 (16:22 +0200)]
Simplify

2 years agoAuto merge of #12562 - Veykril:completion, r=Veykril
bors [Fri, 17 Jun 2022 13:19:45 +0000 (13:19 +0000)]
Auto merge of #12562 - Veykril:completion, r=Veykril

Split completion context module into definitions and analysis parts

2 years agoSplit out tests
Lukas Wirth [Fri, 17 Jun 2022 13:19:09 +0000 (15:19 +0200)]
Split out tests

2 years agoSplit completion context module into definitions and analysis parts
Lukas Wirth [Fri, 17 Jun 2022 13:16:20 +0000 (15:16 +0200)]
Split completion context module into definitions and analysis parts

2 years agoAuto merge of #12560 - Veykril:completion, r=Veykril
bors [Fri, 17 Jun 2022 13:10:05 +0000 (13:10 +0000)]
Auto merge of #12560 - Veykril:completion, r=Veykril

internal: More completions refactoring

This gets rid of the remaining `ImmediateLocation` bits

2 years agoRemove ImmediateLocation in favor of PathKind::Type
Lukas Wirth [Fri, 17 Jun 2022 12:18:03 +0000 (14:18 +0200)]
Remove ImmediateLocation in favor of PathKind::Type

2 years agoMove more ImmediateLocation::TypeAnnotation into PathKind::Type
Lukas Wirth [Fri, 17 Jun 2022 09:31:36 +0000 (11:31 +0200)]
Move more ImmediateLocation::TypeAnnotation into PathKind::Type

2 years agoIntroduce NameRefKind for completions
Lukas Wirth [Fri, 17 Jun 2022 08:45:19 +0000 (10:45 +0200)]
Introduce NameRefKind for completions

2 years agoAuto merge of #12554 - XFFXFF:fix_11959, r=Veykril
bors [Thu, 16 Jun 2022 12:48:33 +0000 (12:48 +0000)]
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

2 years agothe offset used for the completion cursor should always be relative to the original...
XFFXFF [Thu, 16 Jun 2022 08:43:08 +0000 (16:43 +0800)]
the offset used for the completion cursor should always be relative to the original file and not to the marco file

2 years agoAuto merge of #12517 - xuhongxu96:master, r=Veykril
bors [Thu, 16 Jun 2022 09:14:09 +0000 (09:14 +0000)]
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.

2 years agothe scope of the return type is not the body of the function
XFFXFF [Thu, 16 Jun 2022 08:12:46 +0000 (16:12 +0800)]
the scope of the return type is not the body of the function

2 years agodisable private editable in TEST_CONFIG by default
Hongxu Xu [Thu, 16 Jun 2022 00:52:57 +0000 (08:52 +0800)]
disable private editable in TEST_CONFIG by default
adjust test_visibility_filter test case

2 years agoAuto merge of #12545 - jeremyBanks:shebangs, r=Veykril
bors [Wed, 15 Jun 2022 20:01:37 +0000 (20:01 +0000)]
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.

2 years agofix: inserted imports must come after a shebang if present
Jeremy Banks [Wed, 15 Jun 2022 19:42:16 +0000 (19:42 +0000)]
fix: inserted imports must come after a shebang if present

2 years agoadd failing test: inserts_after_shebang
Jeremy Banks [Wed, 15 Jun 2022 16:25:47 +0000 (16:25 +0000)]
add failing test: inserts_after_shebang

2 years agoAuto merge of #12544 - Veykril:proc-error, r=Veykril
bors [Wed, 15 Jun 2022 16:21:21 +0000 (16:21 +0000)]
Auto merge of #12544 - Veykril:proc-error, r=Veykril

Show proc-macro loading errors in unresolved-proc-macro diagnostics

This should help out people to potentially figure out the problem without having to check the logs

2 years agoUpdate test outputs
Lukas Wirth [Wed, 15 Jun 2022 16:07:37 +0000 (18:07 +0200)]
Update test outputs

2 years agoUse the correct crates proc-macro loading error message
Lukas Wirth [Wed, 15 Jun 2022 16:04:39 +0000 (18:04 +0200)]
Use the correct crates proc-macro loading error message

2 years agoDiagnose unresolved attribute proc-macros
Lukas Wirth [Wed, 15 Jun 2022 15:34:13 +0000 (17:34 +0200)]
Diagnose unresolved attribute proc-macros

2 years agoShow proc-macro loading errors in unresolved-proc-macro diagnostics
Lukas Wirth [Wed, 15 Jun 2022 15:33:55 +0000 (17:33 +0200)]
Show proc-macro loading errors in unresolved-proc-macro diagnostics

2 years agoAuto merge of #12541 - Veykril:vs-reload, r=Veykril
bors [Wed, 15 Jun 2022 12:29:34 +0000 (12:29 +0000)]
Auto merge of #12541 - Veykril:vs-reload, r=Veykril

fix: Clear proc-macro changed flag when reloading workspace

2 years agofix: Clear proc-macro changed flag when reloading workspace
Lukas Wirth [Wed, 15 Jun 2022 12:29:13 +0000 (14:29 +0200)]
fix: Clear proc-macro changed flag when reloading workspace

2 years agoAuto merge of #12537 - kevinushey:bugfix/items-typo, r=Veykril
bors [Wed, 15 Jun 2022 07:37:18 +0000 (07:37 +0000)]
Auto merge of #12537 - kevinushey:bugfix/items-typo, r=Veykril

fix typo in package.json

Fixes a small typo in `package.json`.

2 years agorevert hir-def lib.rs
Hongxu Xu [Tue, 14 Jun 2022 23:48:34 +0000 (07:48 +0800)]
revert hir-def lib.rs

2 years agocheck if the container is trait and inherit the visibility
Hongxu Xu [Tue, 14 Jun 2022 23:47:06 +0000 (07:47 +0800)]
check if the container is trait and inherit the visibility

2 years agofix typo in package.json
Kevin Ushey [Tue, 14 Jun 2022 21:44:23 +0000 (14:44 -0700)]
fix typo in package.json

2 years agoremove inherit_visibility test case in item_tree
Hongxu Xu [Tue, 14 Jun 2022 15:24:48 +0000 (23:24 +0800)]
remove inherit_visibility test case in item_tree

2 years agoimplement inherited_visibility in collector
Hongxu Xu [Tue, 14 Jun 2022 15:23:15 +0000 (23:23 +0800)]
implement inherited_visibility in collector

2 years agoremove inherited_visibility in lower.rs
Hongxu Xu [Tue, 14 Jun 2022 13:44:07 +0000 (21:44 +0800)]
remove inherited_visibility in lower.rs

2 years agoadd test cases to complete fn generated by macro in pub trait
Hongxu Xu [Tue, 14 Jun 2022 13:41:09 +0000 (21:41 +0800)]
add test cases to complete fn generated by macro in pub trait

2 years agoAuto merge of #12529 - Veykril:vs-reload, r=Veykril
bors [Tue, 14 Jun 2022 11:43:31 +0000 (11:43 +0000)]
Auto merge of #12529 - Veykril:vs-reload, r=Veykril

fix: Ask the user to reload the vscode window when changing server settings

These requires a window reload, as they are set before the server is being started

2 years agofix: Ask the user to reload the vscode window when changing server settings
Lukas Wirth [Tue, 14 Jun 2022 09:11:08 +0000 (11:11 +0200)]
fix: Ask the user to reload the vscode window when changing server settings

2 years agoAuto merge of #12528 - Veykril:proc-diag, r=Veykril
bors [Tue, 14 Jun 2022 09:00:21 +0000 (09:00 +0000)]
Auto merge of #12528 - Veykril:proc-diag, r=Veykril

fix: Check for the correct proc-macro settings in missing proc-macro diagnostics

2 years agofix: Check for the correct proc-macro settings in missing proc-macro diagnostics
Lukas Wirth [Tue, 14 Jun 2022 08:40:57 +0000 (10:40 +0200)]
fix: Check for the correct proc-macro settings in missing proc-macro diagnostics

2 years agoAuto merge of #12519 - Veykril:hover-assoc, r=Veykril
bors [Mon, 13 Jun 2022 09:58:04 +0000 (09:58 +0000)]
Auto merge of #12519 - Veykril:hover-assoc, r=Veykril

feat: On assoc item name hover, render trait decl docs

2 years agofeat: On assoc item name hover, render trait decl docs
Lukas Wirth [Mon, 13 Jun 2022 09:57:33 +0000 (11:57 +0200)]
feat: On assoc item name hover, render trait decl docs

2 years agoAuto merge of #12515 - Veykril:rustc-proc-macros, r=Veykril
bors [Sun, 12 Jun 2022 17:35:55 +0000 (17:35 +0000)]
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.

2 years agofix: Pass the build data to rustc_private crates
Lukas Wirth [Sun, 12 Jun 2022 17:29:45 +0000 (19:29 +0200)]
fix: Pass the build data to rustc_private crates

2 years agoAuto merge of #12514 - Veykril:proc-mac-err, r=Veykril
bors [Sun, 12 Jun 2022 17:27:41 +0000 (17:27 +0000)]
Auto merge of #12514 - Veykril:proc-mac-err, r=Veykril

More precise proc-macro errors

2 years agoMore precise proc-macro errors
Lukas Wirth [Sun, 12 Jun 2022 16:44:46 +0000 (18:44 +0200)]
More precise proc-macro errors

2 years agoAuto merge of #12513 - Veykril:ty-utils, r=Veykril
bors [Sun, 12 Jun 2022 14:08:08 +0000 (14:08 +0000)]
Auto merge of #12513 - Veykril:ty-utils, r=Veykril

internal: Simplify `hir_ty::utils`

2 years agointernal: Simplify `hir_ty::utils`
Lukas Wirth [Sun, 12 Jun 2022 14:07:08 +0000 (16:07 +0200)]
internal: Simplify `hir_ty::utils`

2 years agoAuto merge of #12509 - Veykril:ty-utils, r=Veykril
bors [Sun, 12 Jun 2022 12:40:57 +0000 (12:40 +0000)]
Auto merge of #12509 - Veykril:ty-utils, r=Veykril

internal: Remove `Generics::type_iter` in favor of `Generics::iter`

2 years agointernal: Remove `Generics::type_iter` in favor of `Generics::iter`
Lukas Wirth [Sun, 12 Jun 2022 12:40:37 +0000 (14:40 +0200)]
internal: Remove `Generics::type_iter` in favor of `Generics::iter`

2 years agoAuto merge of #12455 - bitgaoshu:fix_12441, r=flodiebold
bors [Sun, 12 Jun 2022 09:01:00 +0000 (09:01 +0000)]
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```.

2 years agoAuto merge of #12508 - Veykril:req-retry, r=Veykril
bors [Sun, 12 Jun 2022 00:56:52 +0000 (00:56 +0000)]
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

2 years agofix: Don't respond to cancelled requests when retrying them
Lukas Wirth [Sun, 12 Jun 2022 00:56:19 +0000 (02:56 +0200)]
fix: Don't respond to cancelled requests when retrying them

2 years agoAuto merge of #12506 - cgburgess:master, r=Veykril
bors [Sat, 11 Jun 2022 16:57:38 +0000 (16:57 +0000)]
Auto merge of #12506 - cgburgess:master, r=Veykril

minor: Fix typo in style guide

Fix type `Ues` -> `Use` in `style.md`

2 years agofix typo in style.md
Chris Burgess [Sat, 11 Jun 2022 16:50:36 +0000 (12:50 -0400)]
fix typo in style.md

2 years agoAuto merge of #12504 - rust-lang:Veykril-patch-1, r=Veykril
bors [Sat, 11 Jun 2022 11:41:26 +0000 (11:41 +0000)]
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

2 years agofix: Fix config patching for callable snippets
Lukas Wirth [Sat, 11 Jun 2022 11:41:06 +0000 (13:41 +0200)]
fix: Fix config patching for callable snippets

2 years agoAuto merge of #12481 - XFFXFF:add_label_to_loop, r=Veykril
bors [Sat, 11 Jun 2022 11:34:08 +0000 (11:34 +0000)]
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.

2 years agoAuto merge of #12449 - Veykril:version, r=Veykril
bors [Fri, 10 Jun 2022 23:35:38 +0000 (23:35 +0000)]
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)

2 years agorestrict the assist so that it only appears if the cursor is on the loop keyword
XFFXFF [Fri, 10 Jun 2022 23:02:42 +0000 (07:02 +0800)]
restrict the assist so that it only appears if the cursor is on the loop keyword

2 years agochange 'loop to 'l, as 'loop is not a valid label name
XFFXFF [Mon, 6 Jun 2022 11:20:01 +0000 (19:20 +0800)]
change 'loop to 'l, as 'loop is not a valid label name

2 years agomake generated test pass and make tidy happy
XFFXFF [Mon, 6 Jun 2022 11:18:44 +0000 (19:18 +0800)]
make generated test pass and make tidy happy

2 years agoadd more tests and some doc
XFFXFF [Mon, 6 Jun 2022 10:57:37 +0000 (18:57 +0800)]
add more tests and some doc

2 years agoMake add_label_to_loop basically work
XFFXFF [Mon, 6 Jun 2022 10:49:29 +0000 (18:49 +0800)]
Make add_label_to_loop basically work

2 years agoAuto merge of #12490 - yue4u:fix/show-enum-in-fresh-use-tree, r=Veykril
bors [Fri, 10 Jun 2022 20:33:17 +0000 (20:33 +0000)]
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

2 years agoAuto merge of #12464 - harpsword:fix-inline-variable-mismatched-type, r=Veykril
bors [Fri, 10 Jun 2022 20:24:06 +0000 (20:24 +0000)]
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

2 years agoAuto merge of #12477 - hasali19:auto-reload, r=Veykril
bors [Fri, 10 Jun 2022 20:11:48 +0000 (20:11 +0000)]
Auto merge of #12477 - hasali19:auto-reload, r=Veykril

Restart server automatically on settings changes

Closes #12476

I think this works quite well, but if you think it would be better to put it behind a setting I can do that.

2 years agoAuto merge of #12473 - yue4u:fix/no-enum-parens-in-use, r=Veykril
bors [Fri, 10 Jun 2022 20:03:29 +0000 (20:03 +0000)]
Auto merge of #12473 - yue4u:fix/no-enum-parens-in-use, r=Veykril

fix: avoid adding enum parens in use path

close #12420

2 years agoAuto merge of #12502 - Veykril:deps, r=Veykril
bors [Fri, 10 Jun 2022 19:51:04 +0000 (19:51 +0000)]
Auto merge of #12502 - Veykril:deps, r=Veykril

internal: Bump Dependencies

2 years agointernal: Bump Dependencies
Lukas Wirth [Fri, 10 Jun 2022 14:30:09 +0000 (16:30 +0200)]
internal: Bump Dependencies

2 years agoAuto merge of #12501 - Veykril:dashmap, r=Veykril
bors [Fri, 10 Jun 2022 14:20:46 +0000 (14:20 +0000)]
Auto merge of #12501 - Veykril:dashmap, r=Veykril

internal: Update dashmap and freeze its version

2 years agointernal: Update dashmap and freeze its version
Lukas Wirth [Fri, 10 Jun 2022 13:59:46 +0000 (15:59 +0200)]
internal: Update dashmap and freeze its version

2 years agofeat: append :: after
yue4u [Thu, 9 Jun 2022 07:37:18 +0000 (16:37 +0900)]
feat: append :: after

2 years agoAuto merge of #12487 - lukechu10:master, r=lnicola
bors [Wed, 8 Jun 2022 14:55:17 +0000 (14:55 +0000)]
Auto merge of #12487 - lukechu10:master, r=lnicola

minor: hide param inlay hint when argument is fn-like macro with similar name

Closes #12486

2 years agoAuto merge of #12493 - bjorn3:fix_warnings, r=lnicola
bors [Wed, 8 Jun 2022 14:46:40 +0000 (14:46 +0000)]
Auto merge of #12493 - bjorn3:fix_warnings, r=lnicola

Fix a couple of weak warnings found by rust-analyzer itself

2 years agoHide param inlay hint when argument is fn-like macro with similar name
Luke Chu [Tue, 7 Jun 2022 23:29:25 +0000 (23:29 +0000)]
Hide param inlay hint when argument is fn-like macro with similar name

2 years agoFix a couple of weak warnings found by rust-analyzer itself
bjorn3 [Wed, 8 Jun 2022 14:35:11 +0000 (14:35 +0000)]
Fix a couple of weak warnings found by rust-analyzer itself

2 years agoAuto merge of #12492 - bjorn3:proc_macro_abi_1_63, r=lnicola
bors [Wed, 8 Jun 2022 14:34:40 +0000 (14:34 +0000)]
Auto merge of #12492 - bjorn3:proc_macro_abi_1_63, r=lnicola

feat: Add proc macro ABI for rustc 1.63

Fixes https://github.com/rust-lang/rust-analyzer/issues/12489

This bumps the MSRV to 1.61 due to usage of function pointers and `impl Trait` in const functions.

<details>

<summary>Diff from upstream proc_macro as of rust-lang/rust@e45d9973b2665897a768312e971b82cc62633103 (misses lib.rs as it got renamed to mod.rs)</summary>

```diff
diff -u --recursive ../rust/library/proc_macro/src/bridge/client.rs crates/proc-macro-srv/src/abis/abi_1_63/proc_macro/bridge/client.rs
--- ../rust/library/proc_macro/src/bridge/client.rs     2022-06-08 13:14:57.763123238 +0000
+++ crates/proc-macro-srv/src/abis/abi_1_63/proc_macro/bridge/client.rs 2022-06-08 13:33:23.378430287 +0000
`@@` -430,27 +430,27 `@@`
     buf
 }

-impl Client<crate::TokenStream, crate::TokenStream> {
-    pub const fn expand1(f: impl Fn(crate::TokenStream) -> crate::TokenStream + Copy) -> Self {
+impl Client<super::super::TokenStream, super::super::TokenStream> {
+    pub const fn expand1(f: impl Fn(super::super::TokenStream) -> super::super::TokenStream + Copy) -> Self {
         Client {
             get_handle_counters: HandleCounters::get,
             run: super::selfless_reify::reify_to_extern_c_fn_hrt_bridge(move |bridge| {
-                run_client(bridge, |input| f(crate::TokenStream(input)).0)
+                run_client(bridge, |input| f(super::super::TokenStream(input)).0)
             }),
             _marker: PhantomData,
         }
     }
 }

-impl Client<(crate::TokenStream, crate::TokenStream), crate::TokenStream> {
+impl Client<(super::super::TokenStream, super::super::TokenStream), super::super::TokenStream> {
     pub const fn expand2(
-        f: impl Fn(crate::TokenStream, crate::TokenStream) -> crate::TokenStream + Copy,
+        f: impl Fn(super::super::TokenStream, super::super::TokenStream) -> super::super::TokenStream + Copy,
     ) -> Self {
         Client {
             get_handle_counters: HandleCounters::get,
             run: super::selfless_reify::reify_to_extern_c_fn_hrt_bridge(move |bridge| {
                 run_client(bridge, |(input, input2)| {
-                    f(crate::TokenStream(input), crate::TokenStream(input2)).0
+                    f(super::super::TokenStream(input), super::super::TokenStream(input2)).0
                 })
             }),
             _marker: PhantomData,
`@@` -464,17 +464,17 `@@`
     CustomDerive {
         trait_name: &'static str,
         attributes: &'static [&'static str],
-        client: Client<crate::TokenStream, crate::TokenStream>,
+        client: Client<super::super::TokenStream, super::super::TokenStream>,
     },

     Attr {
         name: &'static str,
-        client: Client<(crate::TokenStream, crate::TokenStream), crate::TokenStream>,
+        client: Client<(super::super::TokenStream, super::super::TokenStream), super::super::TokenStream>,
     },

     Bang {
         name: &'static str,
-        client: Client<crate::TokenStream, crate::TokenStream>,
+        client: Client<super::super::TokenStream, super::super::TokenStream>,
     },
 }

`@@` -490,21 +490,21 `@@`
     pub const fn custom_derive(
         trait_name: &'static str,
         attributes: &'static [&'static str],
-        expand: impl Fn(crate::TokenStream) -> crate::TokenStream + Copy,
+        expand: impl Fn(super::super::TokenStream) -> super::super::TokenStream + Copy,
     ) -> Self {
         ProcMacro::CustomDerive { trait_name, attributes, client: Client::expand1(expand) }
     }

     pub const fn attr(
         name: &'static str,
-        expand: impl Fn(crate::TokenStream, crate::TokenStream) -> crate::TokenStream + Copy,
+        expand: impl Fn(super::super::TokenStream, super::super::TokenStream) -> super::super::TokenStream + Copy,
     ) -> Self {
         ProcMacro::Attr { name, client: Client::expand2(expand) }
     }

     pub const fn bang(
         name: &'static str,
-        expand: impl Fn(crate::TokenStream) -> crate::TokenStream + Copy,
+        expand: impl Fn(super::super::TokenStream) -> super::super::TokenStream + Copy,
     ) -> Self {
         ProcMacro::Bang { name, client: Client::expand1(expand) }
     }
diff -u --recursive ../rust/library/proc_macro/src/bridge/mod.rs crates/proc-macro-srv/src/abis/abi_1_63/proc_macro/bridge/mod.rs
--- ../rust/library/proc_macro/src/bridge/mod.rs        2022-06-08 13:14:57.763123238 +0000
+++ crates/proc-macro-srv/src/abis/abi_1_63/proc_macro/bridge/mod.rs    2022-06-08 13:33:39.694243060 +0000
`@@` -8,7 +8,7 `@@`

 #![deny(unsafe_code)]

-use crate::{Delimiter, Level, LineColumn, Spacing};
+pub use super::{Delimiter, Level, LineColumn, Spacing};
 use std::fmt;
 use std::hash::Hash;
 use std::marker;
diff '--color=always' -u --recursive ../rust/library/proc_macro/src/bridge/server.rs crates/proc-macro-srv/src/abis/abi_1_63/proc_macro/bridge/server.rs
--- ../rust/library/proc_macro/src/bridge/server.rs     2022-06-08 13:14:57.763123238 +0000
+++ crates/proc-macro-srv/src/abis/abi_1_63/proc_macro/bridge/server.rs 2022-06-08 13:33:54.306075391 +0000
`@@` -274,7 +274,7 `@@`
     Result::decode(&mut &buf[..], &mut dispatcher.handle_store)
 }

-impl client::Client<crate::TokenStream, crate::TokenStream> {
+impl client::Client<super::super::TokenStream, super::super::TokenStream> {
     pub fn run<S: Server>(
         &self,
         strategy: &impl ExecutionStrategy,
`@@` -295,7 +295,7 `@@`
     }
 }

-impl client::Client<(crate::TokenStream, crate::TokenStream), crate::TokenStream> {
+impl client::Client<(super::super::TokenStream, super::super::TokenStream), super::super::TokenStream> {
     pub fn run<S: Server>(
         &self,
         strategy: &impl ExecutionStrategy,
diff -u --recursive ../rust/library/proc_macro/src/diagnostic.rs crates/proc-macro-srv/src/abis/abi_1_63/proc_macro/diagnostic.rs
--- ../rust/library/proc_macro/src/diagnostic.rs        2022-05-11 10:07:59.099909725 +0000
+++ crates/proc-macro-srv/src/abis/abi_1_63/proc_macro/diagnostic.rs    2022-06-08 13:35:01.169308145 +0000
`@@` -1,7 +1,6 `@@`
-use crate::Span;
+use super::Span;

 /// An enum representing a diagnostic level.
-#[unstable(feature = "proc_macro_diagnostic", issue = "54140")]
 #[derive(Copy, Clone, Debug)]
 #[non_exhaustive]
 pub enum Level {
`@@` -16,27 +15,23 `@@`
 }

 /// Trait implemented by types that can be converted into a set of `Span`s.
-#[unstable(feature = "proc_macro_diagnostic", issue = "54140")]
 pub trait MultiSpan {
     /// Converts `self` into a `Vec<Span>`.
     fn into_spans(self) -> Vec<Span>;
 }

-#[unstable(feature = "proc_macro_diagnostic", issue = "54140")]
 impl MultiSpan for Span {
     fn into_spans(self) -> Vec<Span> {
         vec![self]
     }
 }

-#[unstable(feature = "proc_macro_diagnostic", issue = "54140")]
 impl MultiSpan for Vec<Span> {
     fn into_spans(self) -> Vec<Span> {
         self
     }
 }

-#[unstable(feature = "proc_macro_diagnostic", issue = "54140")]
 impl<'a> MultiSpan for &'a [Span] {
     fn into_spans(self) -> Vec<Span> {
         self.to_vec()
`@@` -45,7 +40,6 `@@`

 /// A structure representing a diagnostic message and associated children
 /// messages.
-#[unstable(feature = "proc_macro_diagnostic", issue = "54140")]
 #[derive(Clone, Debug)]
 pub struct Diagnostic {
     level: Level,
`@@` -56,7 +50,6 `@@`

 macro_rules! diagnostic_child_methods {
     ($spanned:ident, $regular:ident, $level:expr) => {
-        #[unstable(feature = "proc_macro_diagnostic", issue = "54140")]
         #[doc = concat!("Adds a new child diagnostics message to `self` with the [`",
                         stringify!($level), "`] level, and the given `spans` and `message`.")]
         pub fn $spanned<S, T>(mut self, spans: S, message: T) -> Diagnostic
`@@` -68,7 +61,6 `@@`
             self
         }

-        #[unstable(feature = "proc_macro_diagnostic", issue = "54140")]
         #[doc = concat!("Adds a new child diagnostic message to `self` with the [`",
                         stringify!($level), "`] level, and the given `message`.")]
         pub fn $regular<T: Into<String>>(mut self, message: T) -> Diagnostic {
`@@` -80,10 +72,8 `@@`

 /// Iterator over the children diagnostics of a `Diagnostic`.
 #[derive(Debug, Clone)]
-#[unstable(feature = "proc_macro_diagnostic", issue = "54140")]
 pub struct Children<'a>(std::slice::Iter<'a, Diagnostic>);

-#[unstable(feature = "proc_macro_diagnostic", issue = "54140")]
 impl<'a> Iterator for Children<'a> {
     type Item = &'a Diagnostic;

`@@` -92,17 +82,14 `@@`
     }
 }

-#[unstable(feature = "proc_macro_diagnostic", issue = "54140")]
 impl Diagnostic {
     /// Creates a new diagnostic with the given `level` and `message`.
-    #[unstable(feature = "proc_macro_diagnostic", issue = "54140")]
     pub fn new<T: Into<String>>(level: Level, message: T) -> Diagnostic {
         Diagnostic { level, message: message.into(), spans: vec![], children: vec![] }
     }

     /// Creates a new diagnostic with the given `level` and `message` pointing to
     /// the given set of `spans`.
-    #[unstable(feature = "proc_macro_diagnostic", issue = "54140")]
     pub fn spanned<S, T>(spans: S, level: Level, message: T) -> Diagnostic
     where
         S: MultiSpan,
`@@` -117,59 +104,51 `@@`
     diagnostic_child_methods!(span_help, help, Level::Help);

     /// Returns the diagnostic `level` for `self`.
-    #[unstable(feature = "proc_macro_diagnostic", issue = "54140")]
     pub fn level(&self) -> Level {
         self.level
     }

     /// Sets the level in `self` to `level`.
-    #[unstable(feature = "proc_macro_diagnostic", issue = "54140")]
     pub fn set_level(&mut self, level: Level) {
         self.level = level;
     }

     /// Returns the message in `self`.
-    #[unstable(feature = "proc_macro_diagnostic", issue = "54140")]
     pub fn message(&self) -> &str {
         &self.message
     }

     /// Sets the message in `self` to `message`.
-    #[unstable(feature = "proc_macro_diagnostic", issue = "54140")]
     pub fn set_message<T: Into<String>>(&mut self, message: T) {
         self.message = message.into();
     }

     /// Returns the `Span`s in `self`.
-    #[unstable(feature = "proc_macro_diagnostic", issue = "54140")]
     pub fn spans(&self) -> &[Span] {
         &self.spans
     }

     /// Sets the `Span`s in `self` to `spans`.
-    #[unstable(feature = "proc_macro_diagnostic", issue = "54140")]
     pub fn set_spans<S: MultiSpan>(&mut self, spans: S) {
         self.spans = spans.into_spans();
     }

     /// Returns an iterator over the children diagnostics of `self`.
-    #[unstable(feature = "proc_macro_diagnostic", issue = "54140")]
     pub fn children(&self) -> Children<'_> {
         Children(self.children.iter())
     }

     /// Emit the diagnostic.
-    #[unstable(feature = "proc_macro_diagnostic", issue = "54140")]
     pub fn emit(self) {
-        fn to_internal(spans: Vec<Span>) -> crate::bridge::client::MultiSpan {
-            let mut multi_span = crate::bridge::client::MultiSpan::new();
+        fn to_internal(spans: Vec<Span>) -> super::bridge::client::MultiSpan {
+            let mut multi_span = super::bridge::client::MultiSpan::new();
             for span in spans {
                 multi_span.push(span.0);
             }
             multi_span
         }

-        let mut diag = crate::bridge::client::Diagnostic::new(
+        let mut diag = super::bridge::client::Diagnostic::new(
             self.level,
             &self.message[..],
             to_internal(self.spans),
Only in ../rust/library/proc_macro/src/: lib.rs
Only in crates/proc-macro-srv/src/abis/abi_1_63/proc_macro/: mod.rs
diff -u --recursive ../rust/library/proc_macro/src/quote.rs crates/proc-macro-srv/src/abis/abi_1_63/proc_macro/quote.rs
--- ../rust/library/proc_macro/src/quote.rs     2022-05-11 10:22:36.097429479 +0000
+++ crates/proc-macro-srv/src/abis/abi_1_63/proc_macro/quote.rs 2022-06-08 13:35:08.737221303 +0000
`@@` -4,7 +4,7 `@@`
 //! This quasiquoter uses macros 2.0 hygiene to reliably access
 //! items from `proc_macro`, to build a `proc_macro::TokenStream`.

-use crate::{Delimiter, Group, Ident, Literal, Punct, Spacing, Span, TokenStream, TokenTree};
+use super::{Delimiter, Group, Ident, Literal, Punct, Spacing, Span, TokenStream, TokenTree};

 macro_rules! quote_tt {
     (($($t:tt)*)) => { Group::new(Delimiter::Parenthesis, quote!($($t)*)) };
`@@` -59,10 +59,9 `@@`
 /// This is the actual implementation of the `quote!()` proc macro.
 ///
 /// It is loaded by the compiler in `register_builtin_macros`.
-#[unstable(feature = "proc_macro_quote", issue = "54722")]
 pub fn quote(stream: TokenStream) -> TokenStream {
     if stream.is_empty() {
-        return quote!(crate::TokenStream::new());
+        return quote!(super::TokenStream::new());
     }
     let proc_macro_crate = quote!(crate);
     let mut after_dollar = false;
`@@` -73,7 +72,7 `@@`
                 after_dollar = false;
                 match tree {
                     TokenTree::Ident(_) => {
-                        return Some(quote!(Into::<crate::TokenStream>::into(
+                        return Some(quote!(Into::<super::TokenStream>::into(
                         Clone::clone(&(@ tree))),));
                     }
                     TokenTree::Punct(ref tt) if tt.as_char() == '$' => {}
`@@` -86,33 +85,33 `@@`
                 }
             }

-            Some(quote!(crate::TokenStream::from((@ match tree {
-                TokenTree::Punct(tt) => quote!(crate::TokenTree::Punct(crate::Punct::new(
+            Some(quote!(super::TokenStream::from((@ match tree {
+                TokenTree::Punct(tt) => quote!(super::TokenTree::Punct(super::Punct::new(
                     (@ TokenTree::from(Literal::character(tt.as_char()))),
                     (@ match tt.spacing() {
-                        Spacing::Alone => quote!(crate::Spacing::Alone),
-                        Spacing::Joint => quote!(crate::Spacing::Joint),
+                        Spacing::Alone => quote!(super::Spacing::Alone),
+                        Spacing::Joint => quote!(super::Spacing::Joint),
                     }),
                 ))),
-                TokenTree::Group(tt) => quote!(crate::TokenTree::Group(crate::Group::new(
+                TokenTree::Group(tt) => quote!(super::TokenTree::Group(super::Group::new(
                     (@ match tt.delimiter() {
-                        Delimiter::Parenthesis => quote!(crate::Delimiter::Parenthesis),
-                        Delimiter::Brace => quote!(crate::Delimiter::Brace),
-                        Delimiter::Bracket => quote!(crate::Delimiter::Bracket),
-                        Delimiter::None => quote!(crate::Delimiter::None),
+                        Delimiter::Parenthesis => quote!(super::Delimiter::Parenthesis),
+                        Delimiter::Brace => quote!(super::Delimiter::Brace),
+                        Delimiter::Bracket => quote!(super::Delimiter::Bracket),
+                        Delimiter::None => quote!(super::Delimiter::None),
                     }),
                     (@ quote(tt.stream())),
                 ))),
-                TokenTree::Ident(tt) => quote!(crate::TokenTree::Ident(crate::Ident::new(
+                TokenTree::Ident(tt) => quote!(super::TokenTree::Ident(super::Ident::new(
                     (@ TokenTree::from(Literal::string(&tt.to_string()))),
                     (@ quote_span(proc_macro_crate.clone(), tt.span())),
                 ))),
-                TokenTree::Literal(tt) => quote!(crate::TokenTree::Literal({
+                TokenTree::Literal(tt) => quote!(super::TokenTree::Literal({
                     let mut iter = (@ TokenTree::from(Literal::string(&tt.to_string())))
-                        .parse::<crate::TokenStream>()
+                        .parse::<super::TokenStream>()
                         .unwrap()
                         .into_iter();
-                    if let (Some(crate::TokenTree::Literal(mut lit)), None) =
+                    if let (Some(super::TokenTree::Literal(mut lit)), None) =
                         (iter.next(), iter.next())
                     {
                         lit.set_span((@ quote_span(proc_macro_crate.clone(), tt.span())));
`@@` -129,12 +128,11 `@@`
         panic!("unexpected trailing `$` in `quote!`");
     }

-    quote!([(@ tokens)].iter().cloned().collect::<crate::TokenStream>())
+    quote!([(@ tokens)].iter().cloned().collect::<super::TokenStream>())
 }

 /// Quote a `Span` into a `TokenStream`.
 /// This is needed to implement a custom quoter.
-#[unstable(feature = "proc_macro_quote", issue = "54722")]
 pub fn quote_span(proc_macro_crate: TokenStream, span: Span) -> TokenStream {
     let id = span.save_span();
     quote!((@ proc_macro_crate ) ::Span::recover_proc_macro_span((@ TokenTree::from(Literal::usize_unsuffixed(id)))))
```

</details>