aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
| * | | 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-052-56/+55
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-052-56/+55
| | |/ / / / | |/| | | |
* | | | | | Merge #7163bors[bot]2021-01-051-2/+2
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 <[email protected]>
| * | | | | | Use macos-latest for aarch64-apple-darwin releasesLaurențiu Nicola2021-01-051-2/+2
|/ / / / / /
* | | | | | Merge #7161bors[bot]2021-01-041-57/+7
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7161: Cargo update to remove some dependencies r=kjeremy a=kjeremy Co-authored-by: kjeremy <[email protected]>
| * | | | | | Cargo update to remove some dependencieskjeremy2021-01-041-57/+7
|/ / / / / /
* | | | | | 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
| | |/ / / / | |/| | | |
* | | | | | Merge #7157bors[bot]2021-01-043-20/+20
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7157: Update crates r=kjeremy a=kjeremy Co-authored-by: kjeremy <[email protected]>
| * | | | | | Update crateskjeremy2021-01-043-20/+20
|/ / / / / /
* | | | | | Merge #7156bors[bot]2021-01-042-2/+4
|\ \ \ \ \ \ | |_|_|/ / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7156: Rename extension config r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * | | | | Rename extension configAleksey Kladov2021-01-042-2/+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 #7155bors[bot]2021-01-041-1/+1
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7155: Fix x86_64-pc-windows-msvc artifact name r=lnicola a=lnicola bors r+ Co-authored-by: LaurenČ›iu Nicola <[email protected]>
| * | | | | | Fix x86_64-pc-windows-msvc artifact nameLaurențiu Nicola2021-01-041-1/+1
| | | | | | |
* | | | | | | Merge #7151bors[bot]2021-01-041-10/+9
|\ \ \ \ \ \ \ | |/ / / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7151: Allow download of aarch64-pc-windows-msvc binaries r=matklad a=lnicola Co-authored-by: LaurenČ›iu Nicola <[email protected]>
| * | | | | | Allow download of aarch64-pc-windows-msvc binariesLaurențiu Nicola2021-01-041-10/+9
| | | | | | |
* | | | | | | 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.
* | | | | | | Merge #7152bors[bot]2021-01-043-15/+41
|\ \ \ \ \ \ \ | |/ / / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7152: Implement hover for ConstParam r=Veykril a=Veykril bors r+ Co-authored-by: Lukas Wirth <[email protected]>
| * | | | | | 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 #7148bors[bot]2021-01-041-17/+51
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7148: Build aarch64-pc-windows-msvc releases r=matklad a=lnicola Co-authored-by: LaurenČ›iu Nicola <[email protected]>
| * | | | | Build aarch64-pc-windows-msvc releasesLaurențiu Nicola2021-01-041-17/+51
| |/ / / /
* | | | | 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-032-0/+7
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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]>