aboutsummaryrefslogtreecommitdiff
path: root/crates/ide_assists/src/handlers
Commit message (Collapse)AuthorAgeFilesLines
...
* | | Merge #8802bors[bot]2021-05-121-9/+126
|\ \ \ | |_|/ |/| | | | | | | | | | | | | | | | | | | | | | | 8802: Keep comments and attrs when extracting struct from enum variant r=Veykril a=DropDemBits Fixes #6730 Still unsure if existing visibilities of fields should be forced to pub (which is what was previously done), or if it's okay to keep it in the extracted struct. Co-authored-by: DropDemBits <[email protected]>
| * | Keep comments and attrs when extracting struct from enum variantDropDemBits2021-05-111-9/+126
| | |
* | | Merge #8800bors[bot]2021-05-111-16/+34
|\ \ \ | |_|/ |/| | | | | | | | | | | | | | | | | 8800: feat: Make "pull assignments up" assist work in more cases r=Jesse-Bakker a=Jesse-Bakker Fixes #8771 Co-authored-by: Jesse Bakker <[email protected]>
| * | Make "pull assignments up" assist work in more casesJesse Bakker2021-05-111-16/+34
| | |
* | | Give MergeBehaviour variants better namesLukas Wirth2021-05-101-2/+2
| |/ |/|
* | simplifyAleksey Kladov2021-05-101-12/+9
| |
* | internal: introduce `ast::make::ext` module with common shortcutsAleksey Kladov2021-05-099-67/+45
| | | | | | | | | | | | | | | | | | | | There's a tension between keeping a well-architectured minimal orthogonal set of constructs, and providing convenience functions. Relieve this pressure by introducing an dedicated module for non-orthogonal shortcuts. This is inspired by the django.shortcuts module which serves a similar purpose architecturally.
* | internal: fix make APIAleksey Kladov2021-05-093-36/+18
| |
* | internal: rewrite **Repalce impl Trait** assist to mutable syntax treesAleksey Kladov2021-05-091-11/+13
| |
* | cleanupsAleksey Kladov2021-05-092-2/+2
| |
* | cleanupsAleksey Kladov2021-05-092-14/+14
| |
* | minor: fix test styleAleksey Kladov2021-05-091-55/+31
| |
* | Merge #8773bors[bot]2021-05-081-1/+1
|\ \ | |/ |/| | | | | | | | | | | 8773: fix: Correctly support SelfType when searching for usages r=Veykril a=Veykril Fixes #7443 Co-authored-by: Lukas Wirth <[email protected]>
| * Correctly support SelfType when searching for usagesLukas Wirth2021-05-081-1/+1
| |
* | feat: add "mentoring instructions" test for pull up assistAleksey Kladov2021-05-081-1/+32
| |
* | internal: pull_assignment_up uses mutable treesAleksey Kladov2021-05-081-69/+68
| |
* | minor: add missing testAleksey Kladov2021-05-081-16/+36
|/
* internal: remove one more usage of SyntaxRewriterAleksey Kladov2021-05-081-56/+46
|
* internal: remove one more syntax rewriterAleksey Kladov2021-05-081-57/+33
|
* internal: remove one more usage of the rewriterAleksey Kladov2021-05-041-10/+23
|
* Don't mutate the tree while traversing in reorder_implLukas Tobias Wirth2021-05-031-4/+36
|
* internal: fix naming polarityAleksey Kladov2021-04-301-1/+1
| | | | | Type Constructors have *parameters*, when they are substituted with type *arguments*, we have a type.
* internal: normalize nameAleksey Kladov2021-04-301-1/+1
| | | | All def types in hir are unsubstituted
* Split out merge_imports module from helpers::insert_useLukas Wirth2021-04-241-1/+1
|
* Merge #8591 #8638bors[bot]2021-04-235-137/+143
|\ | | | | | | | | | | | | | | | | | | | | | | 8591: Remove SyntaxRewriter usage in insert_use in favor of mutable syntax trees r=matklad a=Veykril Unfortunately changing `insert_use` to not use `SyntaxRewriter` creates a lot of changes since so much relies on that. But on the other hand this should be the biggest usage of `SyntaxRewriter` I believe. 8638: Remove SyntaxRewriter::from_fn r=Veykril a=Veykril Co-authored-by: Lukas Wirth <[email protected]>
* \ Merge #8317bors[bot]2021-04-231-0/+516
|\ \ | | | | | | | | | | | | | | | | | | | | | 8317: Convert tuple struct to named struct assist r=Veykril a=unexge Closes https://github.com/rust-analyzer/rust-analyzer/issues/8192 Co-authored-by: unexge <[email protected]>
| * | Add missing test case for "Convert to named struct" assistunexge2021-04-231-0/+40
| | |
| * | Stop iterating reference after made an edit in "Convert to named struct" assistunexge2021-04-231-2/+47
| | |
| * | Move reference editing logic into own function to make error handling more ↵unexge2021-04-221-68/+61
| | | | | | | | | | | | ease in "Convert to named struct" assist
| * | Add multi file test for "Convert to named struct" assistunexge2021-04-211-0/+33
| | |
| * | Remove `unwrap`s in "Convert to named struct" assistunexge2021-04-211-9/+19
| | |
| * | Add larger example for "Convert to named struct" assistunexge2021-04-211-4/+30
| | |
| * | Fix incorrectly replacing method calls in "Convert to named struct" assistunexge2021-04-211-17/+41
| | |
| * | Add convert tuple struct to named struct assistunexge2021-04-041-0/+345
| | |
* | | Merge #8620bors[bot]2021-04-221-14/+22
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8620: Remove unnecessary braces for extracted block expression r=Veykril a=brandondong This change addresses the first bullet point of https://github.com/rust-analyzer/rust-analyzer/issues/7839. Specifically, when extracting block expressions, remove the unneeded extra braces inside the generated function. Co-authored-by: Brandon <[email protected]>
| * | | Remove unnecessary braces for extracted block expressionBrandon2021-04-221-14/+22
| | | |
* | | | Add support for fill match arms of boolean valuesComonad2021-04-211-23/+199
| | | | | | | | | | | | | | | | - Add support for boolean inside tuple
* | | | Merge #8602bors[bot]2021-04-201-28/+45
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8602: Fix panic in `replace_derive_with_manual_impl` r=jonas-schievink a=jonas-schievink bors r+ Co-authored-by: Jonas Schievink <[email protected]>
| * | | | Follow testing style guideJonas Schievink2021-04-201-28/+28
| | | | |
| * | | | Fix panic in `replace_derive_with_manual_impl`Jonas Schievink2021-04-201-0/+17
| |/ / /
* / / / "Inline variable" when on a use of the variableJonas Schievink2021-04-201-38/+185
|/ / /
| | * Don't filter equal nodes in reorder assistsLukas Wirth2021-04-212-10/+6
| | |
| | * Add cov_marks to insert_use testsLukas Wirth2021-04-203-39/+36
| | |
| | * Rewrite extract_struct_from_enum_variant assistLukas Wirth2021-04-201-85/+91
| | |
| | * Remove SyntaxRewriter usage in insert_use in favor of tedLukas Wirth2021-04-203-59/+62
| | |
| | * Replace SyntaxRewriter usage with ted in reorder_impl assistLukas Wirth2021-04-201-9/+13
| |/ |/|
* | Add autoimport test with inner itemsJonas Schievink2021-04-191-0/+33
| |
* | Merge #8583bors[bot]2021-04-191-23/+14
|\ \ | | | | | | | | | | | | | | | | | | | | | 8583: Simplify r=Veykril a=Veykril bors r+ Co-authored-by: Lukas Wirth <[email protected]>
| * | SimplifyLukas Wirth2021-04-191-23/+14
| | |
| | |
| \ \
*-. \ \ Merge #8524 #8527bors[bot]2021-04-192-38/+138
|\ \ \ \ | |_|/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8524: Fix extract function with partial block selection r=matklad a=brandondong **Reproduction:** ```rust fn foo() { let n = 1; let mut v = $0n * n;$0 v += 1; } ``` 1. Select the snippet ($0) and use the "Extract into function" assist. 2. Extracted function is incorrect and does not compile: ```rust fn foo() { let n = 1; let mut v = fun_name(n); v += 1; } fn fun_name(n: i32) {} ``` 3. Omitting the ending semicolon from the selection fixes the extracted function: ```rust fn fun_name(n: i32) -> i32 { n * n } ``` **Cause:** - When `extraction_target` uses a block extraction (semicolon case) instead of an expression extraction (no semicolon case), the user selection is directly used as the TextRange. - However, the existing function extraction logic for blocks requires that the TextRange spans from start to end of complete statements to work correctly. - For example: ```rust fn foo() { let m = 2; let n = 1; let mut v = m $0* n; let mut w = 3;$0 v += 1; w += 1; } ``` produces ```rust fn foo() { let m = 2; let n = 1; let mut v = m let mut w = fun_name(n); v += 1; w += 1; } fn fun_name(n: i32) -> i32 { let mut w = 3; w } ``` - The user selected TextRange is directly replaced by the function call which is now in the middle of another statement. The extracted function body only contains statements that were fully covered by the TextRange and so the `* n` code is deleted. The logic for calculating variable usage and outlived variables for the function parameters and return type respectively search within the TextRange and so do not include `m` or `v`. **Fix:** - Only extract full statements when using block extraction. If a user selected part of a statement, extract that full statement. 8527: Switch introduce_named_lifetime assist to use mutable syntax tree r=matklad a=iDawer This extends `GenericParamsOwnerEdit` trait with `get_or_create_generic_param_list` method Co-authored-by: Brandon <[email protected]> Co-authored-by: Dawer <[email protected]>