Commit graph

14271 commits

Author SHA1 Message Date
bors[bot]
861a547270
Merge #7170
7170: More maintainable caps config r=matklad a=matklad

bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2021-01-05 14:52:21 +00:00
Aleksey Kladov
624eb1ee54 More maintainable caps config
The idea here is that we preserve client's config as is, without
changes. This gets rid of state!
2021-01-05 17:46:57 +03:00
bors[bot]
16c544a497
Merge #7171
7171: Emit diagnostics for unresolved item-level macros r=jonas-schievink a=jonas-schievink

We have been emitting macro *expansion* errors for macro calls in item position, as well as expansion and resolution errors for macro calls in bodies. This fills in the last gap, which is *resolution* errors for macro calls in item position (ie. those that name resolution cares about).

bors r+

Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
2021-01-05 14:46:47 +00:00
Jonas Schievink
3cb7c8b548 Emit diagnostics for unresolved item-level macros 2021-01-05 15:42:43 +01:00
bors[bot]
c8d3d5694b
Merge #7168
7168: Rename expr -> tail_expr r=matklad a=matklad

bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2021-01-05 12:51:38 +00:00
Aleksey Kladov
f9707cde68 Rename expr -> tail_expr 2021-01-05 15:51:13 +03:00
bors[bot]
d7013a5934
Merge #7140
7140: Store trait associated items in fst r=matklad a=SomeoneToIgnore

Store imported traits' associated function/methods and constants into `ImportMap.fst` and pefrorm the imports search on them.

This is a first step towards trait autoimport during completion functionality, the way I see it, after this PR, only a few major things are left to be done:

* store all traits' assoc items into fst, not only the ones in scope, as we do now. Any code pointers on how to do this are welcome 😄 
* adjust a few modules in completions crate (`dot.rs`, `qualified_path.rs` at least) to query the import map, reusing the `import_assets` logic heavily

==
With the current import and autoimport implementations, it looks like for a single query, we're either interested in either associated items lookup or in all other `fst` contents lookup, but never both simultaneously.
I would rather not split `fst` in two but add another `Query` parameter to separate those, but let me know if you have any ideas.

Co-authored-by: Kirill Bulatov <mail4score@gmail.com>
2021-01-05 12:04:35 +00:00
Kirill Bulatov
543e950e30 Move the test mark 2021-01-05 14:03:58 +02:00
bors[bot]
5c10f2f705
Merge #7131
7131: Created an assist for inlining a function's body into its caller r=matklad a=Michael-F-Bryan

This introduces an `inline_function` assist which will convert code like this:

```rust
fn add(a: u32, b: u32) -> u32 { a + b }
fn main() {
    let x = add<|>(1, 2);
}
```

Into something like this:

```rust
fn add(a: u32, b: u32) -> u32 { a + b }
fn main() {
    let x = { 
        let a = 1; 
        let b = 2; 
        a + b 
    };
}
```

Fixes #6863.

Co-authored-by: Michael-F-Bryan <michaelfbryan@gmail.com>
2021-01-05 11:04:58 +00:00
bors[bot]
4bc1ed7d59
Merge #7162
7162: Introduce queries to avoid problems when performing completion for enums with many variants r=matklad a=danielframpton

This change introduces two new queries to compute:
  1) attributes for all variants of an enum, and
  2) attributes for all fields of a variant.

The purpose of this change is to avoid the current n^2 behavior when rendering completion for variants (which prevents completion for enums with large numbers of variants).

Co-authored-by: Daniel Frampton <Daniel.Frampton@microsoft.com>
2021-01-05 10:53:24 +00:00
bors[bot]
18dbb8f5c7
Merge #7164
7164: Allow `#anchor` linking of config options r=matklad a=matklad

bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2021-01-05 10:10:45 +00:00
Aleksey Kladov
d7741d1610 Allow #anchor linking of config options 2021-01-05 13:09:06 +03:00
bors[bot]
d21035d6b8
Merge #7163
7163: Use macos-latest for aarch64-apple-darwin releases r=lnicola a=lnicola

Our builds get queued for 40-50 minutes waiting for a `macos-11.0` runner, let's keep using the older OS.

Co-authored-by: Laurențiu Nicola <lnicola@dend.ro>
2021-01-05 09:32:34 +00:00
Laurențiu Nicola
2ad0efa8ab Use macos-latest for aarch64-apple-darwin releases 2021-01-05 11:15:12 +02:00
Daniel Frampton
f08109bd2d Introduce new queries to compute
1) the set of attributes for all variants of an enum, and
  2) the set of attributes for all fields of a variant.

This avoids the current n^2 behavior when rendering completion for variants, which
prevents completion for enums with large numbers of variants.
2021-01-04 20:37:50 -08:00
bors[bot]
a98aa0cda7
Merge #7161
7161: Cargo update to remove some dependencies r=kjeremy a=kjeremy



Co-authored-by: kjeremy <kjeremy@gmail.com>
2021-01-04 22:03:35 +00:00
kjeremy
f13ee0a43d Cargo update to remove some dependencies 2021-01-04 17:02:16 -05:00
bors[bot]
b99b14311c
Merge #7160
7160: Get `hir::Function` return type r=flodiebold a=arnaudgolfouse

Hello !

As said in #7158, I noticed that `hir::Function` has no direct way of getting the return type, so this PR adds this functionality.

Co-authored-by: Arnaud <arnaud.golfouse@free.fr>
2021-01-04 21:07:50 +00:00
bors[bot]
550c49657e
Merge #7147
7147: ssr: Allow replacing expressions with statements r=davidlattimore a=MarijnS95

Depends on #6587

Until that is merged, the diff is https://github.com/MarijnS95/rust-analyzer/compare/stmt..replace-expr-with-stmt

---

Now that statements can be matched and replaced (#6587) some usecases require expressions to be replaced with statements as well. This happens when something that can ambiguously be an expression or statement like `if` and loop blocks appear in the last position of a block, as trailing expression. In this case a replacement pattern of the form `if foo(){$a();}==>>$a();` will only substitute `if` blocks in the list of statements but not if they (implicitly) end up in the trailing expression, where they are not wrapped by an EXPR_STMT (but the pattern and template are, as parsing only succeeds for the `stmt ==>> stmt` case).

Instead of adding two rules that match an expression - and emit duplicate matching errors - allow the template for expressions to be a statement if it fails to parse as an expression.

---

Another gross change that does not seem to break any tests currently, but perhaps a safeguard should be added to only allow this kind of replacement in blocks by "pushing" the replacement template to the statement list and clearing the trailing expression?

CC @davidlattimore 

Co-authored-by: Marijn Suijten <marijn@traverseresearch.nl>
2021-01-04 20:36:13 +00:00
Michael-F-Bryan
7b4b4ef026
Created an inline-function assist (fixes #6863) 2021-01-05 04:18:57 +08:00
Kirill Bulatov
27b3b13824 Small helpers 2021-01-04 22:01:35 +02:00
Arnaud
052404565e Remove RetType 2021-01-04 20:34:23 +01:00
Arnaud
2f0969b873 Document hir::Function::ret_type
This adds documentation for the newly added function. It might be a bit too
detailed, but I like it that way :)
2021-01-04 19:14:44 +01:00
Arnaud
a6dc7cf36d Make it possible to retrieve hir::Function's return type
This is done by adding a `ret_type` method to `hir::Function`.
I followed `assoc_fn_params` convention by creating a new `RetType` type,
that contains the actual return type accessible via a `ty` method.
2021-01-04 19:14:44 +01:00
bors[bot]
0708bfeb72
Merge #7159
7159: Refactor mbe to reduce clone and copying r=edwin0cheng a=edwin0cheng

bors r+

Co-authored-by: Edwin Cheng <edwin0cheng@gmail.com>
2021-01-04 18:02:54 +00:00
Edwin Cheng
d387bfdc4a Simplify SubtreeTokenSource 2021-01-05 02:00:51 +08:00
Edwin Cheng
af3d75ad2e Refactor TokenBuffer for reduc cloning 2021-01-05 02:00:46 +08:00
Kirill Bulatov
ca42a52051 Code review fixes 2021-01-04 18:33:05 +02:00
bors[bot]
c96b4eec95
Merge #7157
7157: Update crates r=kjeremy a=kjeremy



Co-authored-by: kjeremy <kjeremy@gmail.com>
2021-01-04 16:13:53 +00:00
kjeremy
f2d1144b4a Update crates 2021-01-04 11:12:42 -05:00
Edwin Cheng
f1ffd14922 Reduce string copying 2021-01-05 00:11:56 +08:00
Kirill Bulatov
ed1ef3ae13 Do not collect trait type aliases 2021-01-04 17:44:27 +02:00
Kirill Bulatov
ec316cb211 Ignore associated items during unqialified path fuzzy completions 2021-01-04 17:44:27 +02:00
Kirill Bulatov
8721574a85 Simplify 2021-01-04 17:44:27 +02:00
Kirill Bulatov
d27dea86b7 Properly check assoc items lookup 2021-01-04 17:44:27 +02:00
Kirill Bulatov
63d83fa385 Add associated data into fst 2021-01-04 17:44:27 +02:00
Kirill Bulatov
1bfc3a50c0 Add a basic test for the trait fuzzy import 2021-01-04 17:44:27 +02:00
bors[bot]
b3b1f43ff9
Merge #7156
7156: Rename extension config r=matklad a=matklad

bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2021-01-04 15:41:56 +00:00
Aleksey Kladov
01a5b83562 Rename extension config 2021-01-04 18:41:24 +03:00
bors[bot]
6f8af890ed
Merge #7154
7154: Show goto type actions for Const and TypeParams r=matklad a=Veykril

Shows goto type actions for type parameters:
![Code_6hn3rowu9M](https://user-images.githubusercontent.com/3757771/103547890-42aaeb00-4ea5-11eb-8ac7-f166869af5f8.png)

Shows goto type actions for const parameters:
![Code_8UFCcbZL3z](https://user-images.githubusercontent.com/3757771/103547891-43438180-4ea5-11eb-91e8-50681e4d831e.png)

Also shows implementations for `Self`:
![Code_eQj1pWfser](https://user-images.githubusercontent.com/3757771/103547892-43438180-4ea5-11eb-9122-461f2e0fdd01.png)


Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-01-04 15:23:53 +00:00
bors[bot]
b4ab804dca
Merge #7155
7155: Fix x86_64-pc-windows-msvc artifact name r=lnicola a=lnicola

bors r+

Co-authored-by: Laurențiu Nicola <lnicola@dend.ro>
2021-01-04 15:04:23 +00:00
Laurențiu Nicola
039bdddf61 Fix x86_64-pc-windows-msvc artifact name 2021-01-04 17:02:17 +02:00
bors[bot]
cb10a53b16
Merge #7151
7151: Allow download of aarch64-pc-windows-msvc binaries r=matklad a=lnicola



Co-authored-by: Laurențiu Nicola <lnicola@dend.ro>
2021-01-04 14:57:18 +00:00
Lukas Wirth
54b9b03ca2 Show GotoTypeAction for TypeParam 2021-01-04 15:54:45 +01:00
bors[bot]
484df745cc
Merge #7153
7153: rename exrtract_assignment -> pull r=matklad a=matklad

bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2021-01-04 14:47:16 +00:00
Laurențiu Nicola
9decc4c0a3 Allow download of aarch64-pc-windows-msvc binaries 2021-01-04 16:32:46 +02:00
Lukas Wirth
bd47e140b6 Show GotoTypeAction for ConstParam 2021-01-04 15:19:09 +01:00
Lukas Wirth
cd6426afe5 Show implementations when hovering over SelfType 2021-01-04 14:57:59 +01:00
bors[bot]
dcb5387b42
Merge #7152
7152: Implement hover for ConstParam r=Veykril a=Veykril

bors r+

Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-01-04 13:44:21 +00:00
Aleksey Kladov
46afdb6e9b rename exrtract_assignment -> pull
Vertical code motions are conventionally called "pull up" / "push
down".

"extract" is used for introducing new names.
2021-01-04 16:41:57 +03:00