aboutsummaryrefslogtreecommitdiff
path: root/crates/ide_assists/src
Commit message (Collapse)AuthorAgeFilesLines
* refine comment style of testshi-rustin2021-03-242-48/+48
|
* Merge #8168bors[bot]2021-03-241-7/+70
|\ | | | | | | | | | | | | | | 8168: correct `convert to guard return` let_stmt r=Veykril a=hi-rustin close https://github.com/rust-analyzer/rust-analyzer/issues/8074 Co-authored-by: hi-rustin <[email protected]>
| * correct `convert to guard return` let_stmthi-rustin2021-03-241-7/+70
| | | | | | | | | | | | | | | | fix fix add check
* | CleanupAleksey Kladov2021-03-231-67/+45
| |
* | Simplify codeAleksey Kladov2021-03-232-37/+15
| | | | | | | | changelog: skip
* | Use styleguide conforming import for ast nodesAleksey Kladov2021-03-231-34/+36
| |
* | Unify test styleAleksey Kladov2021-03-231-38/+52
| | | | | | | | changelog skip
* | Tweak assits API to fit mutable syntax treesAleksey Kladov2021-03-233-23/+53
|/ | | | changelog: skip
* rewrite merge use trees assist to use muatable syntax treesAleksey Kladov2021-03-222-37/+42
| | | | changelog internal
* clippy::complexity simplifications related to IteratorsMatthias Krüger2021-03-213-16/+10
|
* Less reallocationsKirill Bulatov2021-03-211-1/+0
|
* Disable unqualified assoc items completion for nowKirill Bulatov2021-03-201-0/+1
|
* DocsKirill Bulatov2021-03-201-2/+2
|
* Do not query item search by name eagerlyKirill Bulatov2021-03-201-15/+20
|
* Merge #8119bors[bot]2021-03-202-4/+3
|\ | | | | | | | | | | | | | | 8119: Don't return a SourceChange on WillRenameFiles when nothing gets refactored r=Veykril a=Veykril bors r+ Co-authored-by: Lukas Wirth <[email protected]>
| * Fix add_life_to_type label typoLukas Wirth2021-03-202-4/+3
| |
* | simplifyAleksey Kladov2021-03-191-3/+3
|/ | | | changelog skip
* Cleanup qualify_pathLukas Wirth2021-03-191-27/+17
|
* Fix associated items not being appended to paths in import_assetsLukas Wirth2021-03-181-2/+35
|
* use simpler .map(|x| y) instead of .and_then(|x| Some(y)) for Options. ↵Matthias Krüger2021-03-171-2/+2
| | | | (clippy::bind_instead_of_map)
* don't clone types that are copy (clippy::clone_on_copy)Matthias Krüger2021-03-171-5/+2
|
* Move more boundsAleksey Kladov2021-03-161-26/+10
| | | | changelog: skip
* Upgrade rowanAleksey Kladov2021-03-169-62/+34
| | | | Notably, new rowan comes with support for mutable syntax trees.
* 7709: Added the check for return type of len function.Chetan Khilosiya2021-03-151-9/+26
|
* 7709: Updated the implementation.Chetan Khilosiya2021-03-152-37/+71
| | | | | The get function from impl method is updated. and now same method used to get len and is_empty function.
* 7709: Added the assist to generate is_empty functionChetan Khilosiya2021-03-153-0/+252
| | | | | the assist will be shown when the len function is implemented. is_empty internally uses len function.
* Allow applying De Morgan's law to multiple terms at onceJake Goulding2021-03-121-11/+76
|
* Merge #7956bors[bot]2021-03-123-0/+280
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7956: Add assist to convert for_each into for loops r=Veykril a=SaiintBrisson This PR resolves #7821. Adds an assist to that converts an `Iterator::for_each` into a for loop: ```rust fn main() { let vec = vec![(1, 2), (2, 3), (3, 4)]; x.iter().for_each(|(x, y)| { println!("x: {}, y: {}", x, y); }) } ``` becomes ```rust fn main() { let vec = vec![(1, 2), (2, 3), (3, 4)]; for (x, y) in x.iter() { println!("x: {}, y: {}", x, y); }); } ``` Co-authored-by: Luiz Carlos Mourão Paes de Carvalho <[email protected]> Co-authored-by: Luiz Carlos <[email protected]> Co-authored-by: Lukas Wirth <[email protected]>
| * Fix convert_iter_for_each_to_for doctestLukas Wirth2021-03-122-15/+56
| |
| * fix: generated test fixtureLuiz Carlos Mourão Paes de Carvalho2021-03-122-2/+25
| |
| * fix: replace doc-comments with normal commentsLuiz Carlos2021-03-121-20/+20
| | | | | | Co-authored-by: Lukas Wirth <[email protected]>
| * refactor: refactored and reduced assist codeLuiz Carlos Mourão Paes de Carvalho2021-03-121-36/+21
| |
| * fix: remove semicolonLuiz Carlos Mourão Paes de Carvalho2021-03-101-29/+56
| |
| * fix: code formattingLuiz Carlos Mourão Paes de Carvalho2021-03-101-10/+20
| |
| * fix: tests should work for convert_iter_for_each_to_forLuiz Carlos Mourão Paes de Carvalho2021-03-101-11/+44
| |
| * refactor: create block expressions and for loops using makeLuiz Carlos Mourão Paes de Carvalho2021-03-101-29/+50
| |
| * feat: add assist to conver for_each into for loopsLuiz Carlos Mourão Paes de Carvalho2021-03-102-0/+140
| |
* | fix: add semicolon after type ascriptionConrad Ludgate2021-03-111-3/+30
| |
* | Fix labels for single import assistsKirill Bulatov2021-03-102-20/+12
|/
* Merge #7873 #7933bors[bot]2021-03-093-71/+54
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7873: Consider unresolved qualifiers during flyimport r=matklad a=SomeoneToIgnore Closes https://github.com/rust-analyzer/rust-analyzer/issues/7679 Takes unresolved qualifiers into account, providing better completions (or none, if the path is resolved or do not match). Does not handle cases when both path qualifier and some trait has to be imported: there are many extra issues with those (such as overlapping imports, for instance) that will require large diffs to address. Also does not do a fuzzy search on qualifier, that requires some adjustments in `import_map` for better queries and changes to the default replace range which also seems relatively big to include here. ![qualifier_completion](https://user-images.githubusercontent.com/2690773/110040808-0af8dc00-7d4c-11eb-83db-65af94e843bb.gif) 7933: Improve compilation speed r=matklad a=matklad bors r+ 🤖 Co-authored-by: Kirill Bulatov <[email protected]> Co-authored-by: Aleksey Kladov <[email protected]>
| * Add rustdocs and use better namesKirill Bulatov2021-03-082-10/+12
| |
| * Less lifetines: derive SemanticsScope in placeKirill Bulatov2021-03-082-20/+15
| |
| * Enforce the located imports' orderKirill Bulatov2021-03-082-2/+2
| |
| * Work towards better import labelsKirill Bulatov2021-03-083-19/+26
| |
| * Do not propose already imported importsKirill Bulatov2021-03-081-1/+3
| |
| * Properly handle turbofishes in qualifiersKirill Bulatov2021-03-082-2/+2
| |
| * Return more data about located importsKirill Bulatov2021-03-082-9/+18
| |
| * Draft the qualifier import resolutionKirill Bulatov2021-03-081-3/+6
| |
| * Test and initial refactoringKirill Bulatov2021-03-082-37/+2
| |
* | Merge #7898bors[bot]2021-03-081-6/+67
|\ \ | |/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7898: generate_function assist: infer return type r=JoshMcguigan a=JoshMcguigan This PR makes two changes to the generate function assist: 1. Attempt to infer an appropriate return type for the generated function 2. If a return type is inferred, and that return type is not unit, don't render the snippet ```rust fn main() { let x: u32 = foo$0(); // ^^^ trigger the assist to generate this function } // BEFORE fn foo() ${0:-> ()} { todo!() } // AFTER (only change 1) fn foo() ${0:-> u32} { todo!() } // AFTER (change 1 and 2, note the lack of snippet around the return type) fn foo() -> u32 { todo!() } ``` These changes are made as two commits, in case we want to omit change 2. I personally feel like it is a nice change, but I could understand there being some opposition. #### Pros of change 2 If we are able to infer a return type, and especially if that return type is not the unit type, the return type is almost as likely to be correct as the argument names/types. I think this becomes even more true as people learn how this feature works. #### Cons of change 2 We could never be as confident about the return type as we are about the function argument types, so it is more likely a user will want to change that. Plus it is a confusing UX to sometimes have the cursor highlight the return type after triggering this assist and sometimes not have that happen. #### Why omit unit type? The assumption is that if we infer the return type as unit, it is likely just because of the current structure of the code rather than that actually being the desired return type. However, this is obviously just a heuristic and will sometimes be wrong. But being wrong here just means falling back to the exact behavior that existed before this PR. Co-authored-by: Josh Mcguigan <[email protected]>