aboutsummaryrefslogtreecommitdiff
path: root/crates
Commit message (Collapse)AuthorAgeFilesLines
...
* | | | Merge #7168bors[bot]2021-01-0516-26/+31
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7168: Rename expr -> tail_expr r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * | | | Rename expr -> tail_exprAleksey Kladov2021-01-0516-26/+31
| | | | |
* | | | | Merge #7140bors[bot]2021-01-054-117/+197
|\ \ \ \ \ | |/ / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 <[email protected]>
| * | | | Move the test markKirill Bulatov2021-01-051-2/+4
| | | | |
| * | | | Small helpersKirill Bulatov2021-01-042-1/+5
| | | | |
| * | | | Code review fixesKirill Bulatov2021-01-043-42/+50
| | | | |
| * | | | Do not collect trait type aliasesKirill Bulatov2021-01-041-5/+6
| | | | |
| * | | | Ignore associated items during unqialified path fuzzy completionsKirill Bulatov2021-01-041-1/+9
| | | | |
| * | | | SimplifyKirill Bulatov2021-01-042-27/+37
| | | | |
| * | | | Properly check assoc items lookupKirill Bulatov2021-01-042-46/+73
| | | | |
| * | | | Add associated data into fstKirill Bulatov2021-01-041-49/+45
| | | | |
| * | | | Add a basic test for the trait fuzzy importKirill Bulatov2021-01-041-0/+24
| | | | |
* | | | | Merge #7131bors[bot]2021-01-053-0/+227
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 <[email protected]>
| * | | | | Created an inline-function assist (fixes #6863)Michael-F-Bryan2021-01-043-0/+227
| | | | | |
* | | | | | Merge #7162bors[bot]2021-01-052-12/+55
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 <[email protected]>
| * | | | | | Introduce new queries to computeDaniel Frampton2021-01-052-12/+55
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | | | | | | Merge #7164bors[bot]2021-01-051-3/+2
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7164: Allow `#anchor` linking of config options r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * | | | | | | Allow `#anchor` linking of config optionsAleksey Kladov2021-01-051-3/+2
| | |/ / / / / | |/| | | | |
* | | | | | | Merge #7160bors[bot]2021-01-041-0/+12
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 <[email protected]>
| * | | | | | | Remove `RetType`Arnaud2021-01-041-18/+3
| | | | | | | |
| * | | | | | | Document `hir::Function::ret_type`Arnaud2021-01-041-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds documentation for the newly added function. It might be a bit too detailed, but I like it that way :)
| * | | | | | | Make it possible to retrieve `hir::Function`'s return typeArnaud2021-01-041-0/+23
| |/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | | | | | | Merge #7147bors[bot]2021-01-042-3/+60
|\ \ \ \ \ \ \ | |/ / / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 <[email protected]>
| * | | | | | ssr: Allow replacing expressions with statementsMarijn Suijten2021-01-042-3/+60
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | | | | | | Merge #7159bors[bot]2021-01-045-152/+172
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7159: Refactor mbe to reduce clone and copying r=edwin0cheng a=edwin0cheng bors r+ Co-authored-by: Edwin Cheng <[email protected]>
| * | | | | | | Simplify SubtreeTokenSourceEdwin Cheng2021-01-041-88/+60
| | | | | | | |
| * | | | | | | Refactor TokenBuffer for reduc cloningEdwin Cheng2021-01-045-53/+99
| | | | | | | |
| * | | | | | | Reduce string copyingEdwin Cheng2021-01-041-14/+16
| | |/ / / / / | |/| | | | |
* | | | | | | Update crateskjeremy2021-01-042-4/+4
| |_|/ / / / |/| | | | |
* | | | | | Merge #7154bors[bot]2021-01-042-45/+150
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 <[email protected]>
| * | | | | | Show GotoTypeAction for TypeParamLukas Wirth2021-01-042-17/+66
| | | | | | |
| * | | | | | Show GotoTypeAction for ConstParamLukas Wirth2021-01-042-37/+72
| | | | | | |
| * | | | | | Show implementations when hovering over SelfTypeLukas Wirth2021-01-041-8/+29
| | | | | | |
* | | | | | | Merge #7153bors[bot]2021-01-043-60/+60
|\ \ \ \ \ \ \ | |/ / / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7153: rename exrtract_assignment -> pull r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * | | | | | rename exrtract_assignment -> pullAleksey Kladov2021-01-043-60/+60
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Vertical code motions are conventionally called "pull up" / "push down". "extract" is used for introducing new names.
* | | | | | | Fix HoverAction::Implementation typoLukas Wirth2021-01-042-11/+12
| | | | | | |
* | | | | | | Implement hover for ConstParamLukas Wirth2021-01-042-4/+29
|/ / / / / /
* | | | | | Merge #7149bors[bot]2021-01-043-7/+67
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7149: Implement hovering for TypeParams r=matklad a=Veykril Co-authored-by: Lukas Wirth <[email protected]>
| * | | | | | Impl hovering for TypeParamsLukas Wirth2021-01-043-7/+67
| |/ / / / /
* | | | | | Merge #6587bors[bot]2021-01-0434-0/+278
|\ \ \ \ \ \ | |/ / / / / |/| / / / / | |/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 6587: SSR: Support statement matching and replacing r=davidlattimore a=MarijnS95 For #3186 Hi! This is a smaller initial patchset that came up while working on support for statement lists (and my first time working on RA :grin:). It has me stuck on trailing semicolons for which I hope to receive some feedback. Matching (and replacing) `let` bindings with a trailing semicolon works fine, but trying to omit these (to make patterns more ergonomic) turns out more complex than expected. The "optional trailing semicolon solution" implemented in this PR is ugly because `Matcher::attempt_match_token` should only consume a trailing `;` when parsing `let` bindings to prevent other code from breaking. That at the same time has a nasty side-effect of `;` ending up in the matched code: any replacements on that should include the trailing semicolon as well even if it was not in the pattern. A better example is in the tests: https://github.com/rust-analyzer/rust-analyzer/blob/3ae1649c24a689473b874c331f5f176e5839978e/crates/ssr/src/tests.rs#L178-L184 The end result to achieve is (I guess) allowing replacement of let bindings without trailing semicolon like `let x = $a ==>> let x = 1` (but including them on both sides is still fine), and should make replacement in a macro call (where `foo!(let a = 2;)` for a `$x:stmt` is invalid syntax) possible as well. That should allow to enable/fix these tests: https://github.com/rust-analyzer/rust-analyzer/blob/3ae1649c24a689473b874c331f5f176e5839978e/crates/ssr/src/tests.rs#L201-L214 A possible MVP of this PR might be to drop this optional `;' handling entirely and only allow an SSR pattern/template with semicolons on either side. Co-authored-by: Marijn Suijten <[email protected]>
| * | | | ssr: Add tests for raw LetStmt matchingMarijn Suijten2021-01-031-0/+44
| | | | |
| * | | | parser,syntax: Add separate parser for stmt with optional semicolonMarijn Suijten2021-01-0315-5/+72
| | | | | | | | | | | | | | | | | | | | | | | | | Adjusting `grammar::fragments::stmt` to Optional or Yes will break original functionality and tests.
| * | | | syntax,ssr: Implement statement parsingMarijn Suijten2021-01-0331-0/+167
| | | | |
* | | | | Merge #7113bors[bot]2021-01-031-0/+4
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7113: Manual updates r=matklad a=tekul Add some details on how to build the manual and some clarification on how to deal with "proc macro2 warnings. For context, this arose from [this question](https://users.rust-lang.org/t/how-to-disable-rust-analyzer-proc-macro-warnings-in-neovim/53150) on users.rust-lang.org. Co-authored-by: Luke Taylor <[email protected]>
| * | | | | Expand doc on dealing with "proc macro not expanded"Luke Taylor2021-01-011-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Added the error message to the doc for the UnresolvedProcMacro diagnostic, explaining that either enabling the procMacro setting or disabling this diagnostic should make the warnings go away.
* | | | | | Merge #7138bors[bot]2021-01-031-14/+89
|\ \ \ \ \ \ | |_|_|/ / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7138: Support assignment to FieldExpr for extract_assignment assist r=matklad a=Jesse-Bakker Co-authored-by: Jesse Bakker <[email protected]>
| * | | | | Support assignment to FieldExpr for extract_assignment assistJesse Bakker2021-01-031-14/+89
| | |_|/ / | |/| | |
* / | | | Upgrade expect-test to 1.1Jesse Bakker2021-01-039-9/+9
|/ / / /
* | / / Revert "Proper handling $crate and local_inner_macros"Jonas Schievink2021-01-037-176/+52
| |/ / |/| |
* | | Merge #7136bors[bot]2021-01-032-0/+52
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7136: Fixed nested eager macro bug r=edwin0cheng a=edwin0cheng fixes #7126 bors r+ Co-authored-by: Edwin Cheng <[email protected]>