Commit Graph

15351 Commits

Author SHA1 Message Date
Jay Somedon c92db2abf9 Update comment
Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
2021-03-04 09:11:43 +08:00
Jay Somedon 55d73bc675 Fix multiple issues from code review
* check metadata version
* use memmap
* use Result instead of unwrap

with Jay Somedon <jay.somedon@outlook.com>
2021-03-04 09:11:33 +08:00
Jay Somedon 8fd7cd7406 Configure object crate's feature
Signed-off-by: Jay Somedon <jay.somedon@outlook.com>
2021-03-04 09:05:41 +08:00
Jay Somedon 6608acef71 Read version of rustc that compiled proc macro
With Jay Somedon <jay.somedon@outlook.com>
2021-03-04 09:05:23 +08:00
bors[bot] 7275750e42 Merge #7866
7866: Complete `while let` r=Veykril a=Veykril

bors r+

Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-03-03 22:05:38 +00:00
Lukas Wirth 02e9440e23 Complete while let 2021-03-03 23:04:11 +01:00
Lukas Wirth 1914b7723f Don't complete super unless its valid in paths 2021-03-03 21:58:48 +01:00
bors[bot] d0fa7abc50 Merge #7863
7863: Prevent renaming SelfType and BuiltinType r=Veykril a=Veykril

bors r+

Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-03-03 18:49:43 +00:00
Lukas Wirth e194f2edc4 Prevent renaming SelfType and BuiltinType 2021-03-03 19:48:53 +01:00
Lukas Wirth 183ba483a9 Reorder functions in rename.rs 2021-03-03 19:48:35 +01:00
bors[bot] 607716d213 Merge #7862
7862: Remove incorrect broken test r=jonas-schievink a=jonas-schievink

`Struct` cannot be named at all in that position, since `super` doesn't
resolve to the block scope

bors r+

Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
2021-03-03 18:11:56 +00:00
Jonas Schievink 1c057dc3c1 Remove incorrect broken test
`Struct` cannot be named at all in that position, since `super` doesn't
resolve to the block scope
2021-03-03 19:10:56 +01:00
bors[bot] 603481f534 Merge #7861
7861: Special-case parenthesized and negated expressions in demorgan assist r=lnicola a=Jesse-Bakker

Fixes #7831 

Co-authored-by: Jesse Bakker <github@jessebakker.com>
2021-03-03 13:29:56 +00:00
Jesse Bakker 1363d60111 Special-case parenthesized and negated expressions in demorgan assist 2021-03-03 13:18:24 +01:00
bors[bot] 2b22fc929a Merge #7858
7858: Clarify comparison rule r=matklad a=matklad

bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2021-03-03 08:23:38 +00:00
Aleksey Kladov e15621482c Clarify comparison rule 2021-03-03 11:23:05 +03:00
bors[bot] 3b507aa90f Merge #7853
7853: Update lexer r=kjeremy a=kjeremy



Co-authored-by: kjeremy <kjeremy@gmail.com>
2021-03-02 20:34:24 +00:00
kjeremy 41d1b4cd26 Update lexer 2021-03-02 15:33:22 -05:00
bors[bot] 0f8ee46edc Merge #7852
7852: bump once_cell r=kjeremy a=kjeremy



Co-authored-by: kjeremy <kjeremy@gmail.com>
2021-03-02 17:42:20 +00:00
kjeremy 58697afca4 bump once_cell 2021-03-02 12:41:20 -05:00
bors[bot] 0ce539ec96 Merge #7851
7851: Compress tests r=matklad a=matklad

bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2021-03-02 15:46:02 +00:00
Aleksey Kladov 8471da62e6 Compress tests 2021-03-02 18:35:52 +03:00
bors[bot] 04abf80b5f Merge #7824
7824: feat: add type ascription r=matklad a=conradludgate

Based on this conversation: https://twitter.com/rust_analyzer/status/1366092401278922757
Built off of `add_turbo_fish`, finds the current `let` statement, checks if it has type/turbofish already and checks if the rhs function is generic.

There's one case I couldn't figure out how to implement that would be nice:

```rust
#[test]
fn add_type_ascription_function_result() {
    check_assist(
        add_type_ascription,
        r#"
fn make<T>() -> Result<T, &'static str> {}
fn main() {
    let x = make()$0;
}
"#,
        r#"
fn make<T>() -> Result<T, &'static str> {}
fn main() {
    let x: Result<${0:_}, &'static str> = make();
}
"#,
    );
}
```

The `Function::ret_type` fn wasn't returning anything much useful so I'm not sure how to identity such scenarios just yet

Co-authored-by: Conrad Ludgate <conradludgate@gmail.com>
2021-03-02 15:28:41 +00:00
Conrad Ludgate 2c3c728e0a chore: remove redundant tests 2021-03-02 15:26:36 +00:00
Conrad Ludgate 9a49735d30 chore: remove deleted file path 2021-03-02 15:02:47 +00:00
Conrad Ludgate b41e73ac12 chore: codegen 2021-03-02 14:55:37 +00:00
Conrad Ludgate d4fad2be8d refactor: re-use add_turbo_fish function 2021-03-02 14:30:11 +00:00
Conrad Ludgate 4a36129c7a chore: fmt + docs 2021-03-02 14:30:10 +00:00
Conrad Ludgate 218390b9fb chore: rename var 2021-03-02 14:30:10 +00:00
Conrad Ludgate 705712993f feat: add type ascription assist 2021-03-02 14:30:10 +00:00
bors[bot] f8152171bb Merge #7850
7850: Don't add space when joining line to opening quote r=matklad a=matklad

bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2021-03-02 14:19:45 +00:00
Aleksey Kladov e2fc9411f1 Don't add space when joining line to opening quote 2021-03-02 17:18:45 +03:00
bors[bot] 8e7c42d1be Merge #7849
7849: Fix xflags fallout r=matklad a=matklad

bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2021-03-02 13:54:56 +00:00
Aleksey Kladov 84483f672f Fix xflags fallout
https://github.com/rust-analyzer/rust-analyzer/pull/7847#issuecomment-788920830
2021-03-02 16:50:03 +03:00
bors[bot] 6a585c6ee2 Merge #7795
7795: Show docs on hover for keywords and primitives r=matklad a=Veykril

![lAWFadkziX](https://user-images.githubusercontent.com/3757771/109369534-eeb4f500-789c-11eb-8f2b-2f9c4e129de3.gif)

It's a bit annoying that this requires the `SyntaxNode` and `Semantics` to be pulled through `hover_for_definition` just so we can get the `std` crate but I couldn't think of a better way.

Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-03-02 13:46:50 +00:00
Lukas Wirth 8d305680e6 Show docs on hover for keywords and primitives 2021-03-02 14:41:01 +01:00
bors[bot] 657ec3616f Merge #7335 #7691
7335: added region folding r=matklad a=LucianoBestia

Regions of code that you'd like to be folded can be wrapped with  `// #region` and `// #endregion` line comments.
This is called "Region Folding". It is originally available for many languages in VSCode. But Rust-analyzer has its own folding function and this is missing.
With this Pull Request I am suggesting a simple solution. 
The regions are a special kind of comments, so I added a bit of code in the comment folding function.
The regex to match are: `^\s*//\s*#?region\b` and `^\s*//\s*#?endregion\b`.
The number of space characters is not important. There is an optional # character. The line can end with a name of the region.
Example:
```rust
// 1. some normal comment
// region: test
// 2. some normal comment
calling_function(x,y);
// endregion: test
```
I added a test for this new functionality in `folding_ranges.rs`.
Please, take a look and comment. 
I found that these exact regexes are already present in the file `language-configuration.json`, but I don't find a way to read this configuration. So my regex is hardcoded in the code.

7691: Suggest name in extract variable r=matklad a=cpud36

Generate better default name in extract variable assist as was mentioned in issue #1587

# Currently supported
(in order of declining precedence)
1. Expr is argument to a function; use corresponding parameter name
2. Expr is result of a function or method call; use this function/method's name
3. Use expr type name (if possible)
4. Fallback to `var_name` otherwise

# Showcase

![generate_derive_variable_name_from_method](https://user-images.githubusercontent.com/4218373/108013304-72105400-701c-11eb-9f13-eec52e74d0cc.gif)
![generate_derive_variable_name_from_param](https://user-images.githubusercontent.com/4218373/108013305-72a8ea80-701c-11eb-957e-2214f7f005de.gif)

# Questions

* Should we more aggressively strip known types? E.g. we already strip `&T -> T`; should we strip `Option<T> -> T`, `Result<T, E> -> T`, and others?
* Integers and floats use `var_name` by default. Should we introduce a name, like `i`, `f` etc?
* Can we return a list and suggest a name when renaming(like IntelliJ does)?
* Should we add counters to remove duplicate variables? E.g. `type`, `type1`, type2`, etc.


Co-authored-by: Luciano Bestia <LucianoBestia@gmail.com>
Co-authored-by: Luciano <31509965+LucianoBestia@users.noreply.github.com>
Co-authored-by: Vladyslav Katasonov <cpud47@gmail.com>
2021-03-02 13:32:06 +00:00
Vladyslav Katasonov 7066e6b362 strip useless methods, and unary ops in suggest_name 2021-03-02 16:25:24 +03:00
Vladyslav Katasonov afc68277f6 pull out suggest_name::* to utils; enchance heuristics 2021-03-02 16:25:22 +03:00
Vladyslav Katasonov f915ab79fa suggest parameter name before function name 2021-03-02 16:23:00 +03:00
Vladyslav Katasonov 3b75dda745 try to suggest name when extracting variable 2021-03-02 16:23:00 +03:00
bors[bot] 91bf5fa827 Merge #7513
7513: NFA parser for mbe matcher r=matklad a=edwin0cheng

Almost straight porting from rustc one, but a little bit slow :(

```
rust-analyzer analysis-stats -q . 
```

From:
```log
Database loaded:     636.11ms, 277minstr
  crates: 36, mods: 594, decls: 11527, fns: 9017
Item Collection:     10.99s, 60ginstr
  exprs: 249618, ??ty: 2699 (1%), ?ty: 2101 (0%), !ty: 932
Inference:           28.94s, 123ginstr
Total:               39.93s, 184ginstr
```

To:
```log
Database loaded:     630.90ms, 277minstr
  crates: 36, mods: 594, decls: 11528, fns: 9018
Item Collection:     13.70s, 77ginstr
  exprs: 249482, ??ty: 2699 (1%), ?ty: 2101 (0%), !ty: 932
Inference:           30.27s, 133ginstr
Total:               43.97s, 211ginstr
```

Fixes #4777

Co-authored-by: Edwin Cheng <edwin0cheng@gmail.com>
2021-03-02 13:20:47 +00:00
bors[bot] 8eee9149e8 Merge #7848
7848: Bump cargo_metadata r=matklad a=lnicola



Co-authored-by: Laurențiu Nicola <lnicola@dend.ro>
2021-03-02 12:31:15 +00:00
Laurențiu Nicola b20708f6ee Bump cargo_metadata 2021-03-02 14:27:29 +02:00
bors[bot] f5c25f6b83 Merge #7837
7837: Add more information to VSCode extenstion README r=matklad a=IceSentry

A lot of these are duplicated from the documentation or main README. While it's unfortunate to have duplicated information, the current VSCode page is very barebones and doesn't offer much confidence. 

This updated README offers a few more links and follows a structure similar to the official rust extension and other popular vscode extensions. The additions are, as much as possible specific to the vscode extension and not rust-analyzer as a LSP.

The note about not using the official extension is also right there at the top because that's a common issue people have when trying it out. 

I added the sponsor section since it's common in other extensions README, but I'm not sure if it's necessary

Co-authored-by: Charles Giguere <IceSentry@users.noreply.github.com>
Co-authored-by: cgiguere <c.giguere42@gmail.com>
2021-03-02 12:19:50 +00:00
bors[bot] 8d2b0e6064 Merge #7847
7847: Switch from pico-args to xflags r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2021-03-02 12:09:51 +00:00
Aleksey Kladov 3038579c8e Switch from pico-args to xflags 2021-03-02 15:08:20 +03:00
bors[bot] 61c73caa30 Merge #7836
7836: Check for path dev-dependencies with a version number r=lnicola a=lnicola

Closes https://github.com/rust-analyzer/rust-analyzer/pull/7828#issuecomment-788174522.

This looks a bit ugly, but at least fixes an issues where we missed target-specific dependencies.

Co-authored-by: Laurențiu Nicola <lnicola@dend.ro>
2021-03-02 08:38:25 +00:00
bors[bot] 2183d65c97 Merge #7777
7777: Implement line<->block comment assist r=Veykril a=djrenren

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

Co-authored-by: John Renner <john@jrenner.net>
2021-03-02 08:04:38 +00:00
bors[bot] b7fa6dfabc Merge #7844
7844: Fix ProcMacroClient dropped too early in cli r=edwin0cheng a=edwin0cheng

Fix #7843

bors r+

Co-authored-by: Edwin Cheng <edwin0cheng@gmail.com>
2021-03-02 05:20:32 +00:00