aboutsummaryrefslogtreecommitdiff
path: root/crates/syntax
Commit message (Collapse)AuthorAgeFilesLines
* Add support for doc on hover for macro 2.0Edwin Cheng2021-03-271-2/+2
|
* Basic Support Macro 2.0Edwin Cheng2021-03-271-0/+1
|
* Add TokenTextAleksey Kladov2021-03-263-7/+89
|
* syntax: return owned string instead of leaking stringcynecx2021-03-262-10/+8
|
* Use more std::array::IntoIterLaurențiu Nicola2021-03-251-4/+3
|
* Use arrayvec 0.6Laurențiu Nicola2021-03-252-9/+9
|
* Simplify codeAleksey Kladov2021-03-231-2/+3
| | | | changelog: skip
* rewrite merge use trees assist to use muatable syntax treesAleksey Kladov2021-03-224-46/+74
| | | | changelog internal
* :arrow_up: rowanAleksey Kladov2021-03-221-1/+1
|
* a lot of clippy::style fixesMatthias Krüger2021-03-216-44/+32
|
* clippy::complexity simplifications related to IteratorsMatthias Krüger2021-03-211-2/+1
|
* use strip_prefix() instead of starts_with and slicing (clippy::manual_strip)Matthias Krüger2021-03-211-2/+1
|
* remove more redundant clones (clippy::redundant_clone())Matthias Krüger2021-03-212-3/+3
|
* Don't use an untyped String for ActiveParam trackingLukas Wirth2021-03-201-0/+9
|
* Move `AttrsOwnerNode` to syntax and make it publicJonas Schievink2021-03-192-2/+32
|
* Make ast editing more ergonomicAleksey Kladov2021-03-192-40/+66
| | | | changelog internal
* Parse extended_key_value_attributesLukas Wirth2021-03-192-33/+23
|
* Correctly parse attributes on fn parametersJonas Schievink2021-03-172-49/+49
|
* Better handling of block doc commentsLukas Wirth2021-03-173-35/+29
|
* Merge #8059bors[bot]2021-03-171-1/+1
|\ | | | | | | | | | | | | | | 8059: Move doc-comment highlight injection from AST to HIR r=matklad,jonas-schievink a=Veykril Fixes #5016 Co-authored-by: Lukas Wirth <[email protected]>
| * Replace trait object boxing with extra AttrsOwnerNodeLukas Wirth2021-03-161-1/+1
| |
* | avoid converting types into themselves via .into() (clippy::useless-conversion)Matthias Krüger2021-03-172-2/+2
| | | | | | | | example: let x: String = String::from("hello world").into();
* | pit-of-successify tree editorAleksey Kladov2021-03-162-14/+17
| |
* | Auto-magical whitespaceAleksey Kladov2021-03-162-23/+58
| |
* | Move more boundsAleksey Kladov2021-03-161-10/+44
|/ | | | changelog: skip
* Upgrade rowanAleksey Kladov2021-03-169-26/+226
| | | | Notably, new rowan comes with support for mutable syntax trees.
* Fix macro expansion for statements w/o semicolonEdwin Cheng2021-03-161-2/+8
|
* Enable thread-local coverage marksLaurențiu Nicola2021-03-151-1/+1
|
* Attach trivia to ast::Union nodesLukas Wirth2021-03-141-2/+2
|
* Merge #7956bors[bot]2021-03-121-0/+3
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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]>
| * feat: add expr_for_loop to make in syntaxLuiz Carlos Mourão Paes de Carvalho2021-03-101-0/+3
| |
* | cargo update and lexerkjeremy2021-03-101-1/+1
|/
*-. Merge #7873 #7933bors[bot]2021-03-094-1/+49
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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]>
| | * Improve compilation speedAleksey Kladov2021-03-091-1/+1
| |/ |/|
| * Better strip turbofishesKirill Bulatov2021-03-083-0/+48
|/
* Use upstream cov-markLaurențiu Nicola2021-03-082-14/+13
|
* Use the same name in xtask and test utilsAleksey Kladov2021-03-081-3/+3
|
* Update lexerkjeremy2021-03-021-1/+1
|
* Merge #7777bors[bot]2021-03-022-5/+9
|\ | | | | | | | | | | | | | | 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 <[email protected]>
| * Implement line<->block comment assistJohn Renner2021-02-252-5/+9
| |
* | bump crateskjeremy2021-02-251-1/+1
| |
* | Add tests for apply_demorganLukas Wirth2021-02-241-2/+5
|/
* Bump depsLaurențiu Nicola2021-02-211-1/+1
|
* Fix incorrect missing field diagnostic with box patternsLaurențiu Nicola2021-02-201-4/+13
|
* Revert "Replace usage of ast::NameOrNameRef with ast::NameLike"Lukas Wirth2021-02-172-18/+23
| | | | This reverts commit e1dbf43cf85f84c3a7e40f9731fc1f7ac96f8979.
* Replace usage of ast::NameOrNameRef with ast::NameLikeLukas Wirth2021-02-172-23/+18
|
* Implement ast::AstNode for NameLike and move it to node_extLukas Wirth2021-02-162-1/+47
|
* Merge #7687bors[bot]2021-02-164-0/+88
|\ | | | | | | | | | | | | | | | | | | 7687: Specialization for async traits r=matklad a=arnaudgolfouse Fixes #7669. Adapting the parser seemed to be all that was needed, but I am not very experienced with the codebase. Is this enough ? Co-authored-by: Arnaud <[email protected]>
| * Specialization for async traitsArnaud2021-02-154-0/+88
| |
* | Merge #7620bors[bot]2021-02-161-9/+50
|\ \ | |/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7620: Support control flow in `extract_function` assist r=matklad a=cpud36 Support `return`ing from outer function, `break`ing and `continue`ing outer loops when extracting function. # Example Transforms ```rust fn foo() -> i32 { let items = [1,2,3]; let mut sum = 0; for &item in items { <|>if item == 42 { break; }<|> sum += item; } sum } ``` Into ```rust fn foo() -> i32 { let items = [1,2,3]; let mut sum = 0; for &item in items { if fun_name(item) { break; } sum += item; } sum } fn fun_name(item: i32) -> bool { if item == 42 { return true; } false } ``` ![add_explicit_type_infer_type](https://user-images.githubusercontent.com/4218373/107544222-0fadf280-6bdb-11eb-9625-ed6194ba92c0.gif) # Features Supported variants - break and function does not return => uses `bool` and plain if - break and function does return => uses `Option<T>` and matches on it - break with value and function does not return => uses `Option<T>` and if let - break with value and function does return => uses `Result<T, U>` and matches on t - same for `return` and `continue`(but we can't continue with value) Assist does handle nested loops and nested items(like functions, modules, impls) Try `expr?` operator is allowed together with `return Err(_)` and `return None`. `return expr` is not allowed. # Not supported ## Mixing `return` with `break` or `continue` If we have e.g. a `return` and a `break` in the selected code, it is unclear what the produced code should look like. We can try `Result<T, Option<U>>` or something like that, but it isn't idiomatic, nor it is established. Otherwise, implementation is relatively simple. ## `break` with label Not sure how to handle different labels for multiple `break`s. [edit] implemented try `expr?` Co-authored-by: Vladyslav Katasonov <[email protected]>