aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_syntax/src/ast
Commit message (Collapse)AuthorAgeFilesLines
...
* Scale back the traitsAleksey Kladov2020-04-091-2/+3028
|
* Add AstElement trait, generate tokens, support tokens in enumsLuca Barbieri2020-04-081-60/+2
| | | | | | | | | - Adds a new AstElement trait that is implemented by all generated node, token and enum structs - Overhauls the code generators to code-generate all tokens, and also enhances enums to support including tokens, node, and nested enums
* Remove the second code-path for completing names in patternsAleksey Kladov2020-04-031-0/+3
|
* Macro patterns are not confused with expressions.Aleksey Kladov2020-04-031-1/+41
| | | | | | | | | | | We treat macro calls as expressions (there's appropriate Into impl), which causes problem if there's expresison and non-expression macro in the same node (like in the match arm). We fix this problem by nesting macor patterns into another node (the same way we nest path into PathExpr or PathPat). Ideally, we probably should add a similar nesting for macro expressions, but that needs some careful thinking about macros in blocks: `{ am_i_expression!() }`.
* Merge #3746bors[bot]2020-04-031-0/+25
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 3746: Add create_function assist r=flodiebold a=TimoFreiberg The function part of #3639, creating methods will come later - [X] Function arguments - [X] Function call arguments - [x] Method call arguments - [x] Literal arguments - [x] Variable reference arguments - [X] Migrate to `ast::make` API Done, but there are some ugly spots. Issues to handle in another PR: - function reference arguments: Their type isn't printed properly right now. The "insert explicit type" assist has the same issue and this is probably a relatively rare usecase. - generating proper names for all kinds of argument expressions (if, loop, ...?) Without this, it's totally possible for the assist to generate invalid argument names. I think the assist it's already helpful enough to be shipped as it is, at least for me the main usecase involves passing in named references. Besides, the Rust tooling ecosystem is immature enough that some janky behaviour in a new assist probably won't scare anyone off. - select the generated placeholder body so it's a bit easier to overwrite it - create method (`self.foo<|>(..)` or `some_foo.foo<|>(..)`) instead of create_function. The main difference would be finding (or creating) the impl block and inserting the `self` argument correctly - more specific default arg names for literals. So far, every generated argument whose name can't be taken from the call site is called `arg` (with a number suffix if necessary). - creating functions in another module of the same crate. E.g. when typing `some_mod::foo<|>(...)` when in `lib.rs`, I'd want to have `foo` generated in `some_mod.rs` and jump there. Issues: the mod could exist in `some_mod.rs`, in `lib.rs` as `mod some_mod`, or inside another mod but be imported via `use other_mod::some_mod`. - refer to arguments of the generated function with a qualified path if the types aren't imported yet (alternative: run autoimport. i think starting with a qualified path is cleaner and there's already an assist to replace a qualified path with an import and an unqualified path) - add type arguments of the arguments to the generated function - Autocomplete functions with information from unresolved calls (see https://github.com/rust-analyzer/rust-analyzer/pull/3746#issuecomment-605281323) Issues: see https://github.com/rust-analyzer/rust-analyzer/pull/3746#issuecomment-605282542. The unresolved call could be anywhere. But just offering this autocompletion for unresolved calls in the same module would already be cool. Co-authored-by: Timo Freiberg <[email protected]>
| * Use ast::make API in add_function assistTimo Freiberg2020-04-011-0/+25
| |
* | Merge #3814bors[bot]2020-04-031-1/+2
|\ \ | |/ |/| | | | | | | | | | | | | | | 3814: Add impl From for enum variant assist r=flodiebold a=mattyhall Basically adds a From impl for tuple enum variants with one field. It was recommended to me on the zulip to maybe try using the trait solver, but I had trouble with that as, although it could resolve the trait impl, it couldn't resolve the variable unambiguously in real use. I'm also unsure of how it would work if there were already multiple From impls to resolve - I can't see a way we could get more than one solution to my query. Fixes #3766 Co-authored-by: Matthew Hall <[email protected]>
| * Add impl From for enum variant assistMatthew Hall2020-04-011-1/+2
| | | | | | | | | | | | Basically adds a From impl for tuple enum variants with one field. Added to cover the fairly common case of implementing your own Error that can be created from another one, although other use cases exist.
* | lower bool literal with the value from source code rather than default bool ↵Josh Mcguigan2020-04-011-2/+3
| | | | | | | | value
* | When adding match arm, don't let the floating commaAleksey Kladov2020-03-311-9/+20
| |
* | Use IntoIterAleksey Kladov2020-03-301-4/+4
| |
* | Tidy up insertion position logicMatthew Hall2020-03-291-20/+6
| |
* | Remove unneeded variablesMatthew Hall2020-03-291-4/+2
| |
* | Append new match arms rather than replacing all of themMatthew Hall2020-03-281-30/+112
|/ | | | This means we now retain comments when filling in match arms.
* Nice string formattingAleksey Kladov2020-03-281-7/+8
|
* Fix merge-imports assist for wildcard importsPiotr Szpetkowski2020-03-272-2/+8
|
* Merge #3742bors[bot]2020-03-272-5/+11
|\ | | | | | | | | | | | | | | | | | | | | 3742: Replace if with if-let r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * Replace if with if-letAleksey Kladov2020-03-272-5/+11
| |
* | Merge #3741bors[bot]2020-03-271-1/+10
|\| | | | | | | | | | | | | | | | | | | | | 3741: More general ctor for ifs r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * More general ctor for ifsAleksey Kladov2020-03-271-1/+10
| |
* | Merge #3740bors[bot]2020-03-271-29/+28
|\| | | | | | | | | | | | | | | | | | | | | 3740: Simplify r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * SimplifyAleksey Kladov2020-03-271-29/+28
| |
* | Merge #3732bors[bot]2020-03-261-0/+4
|\ \ | |/ |/| | | | | | | | | | | 3732: Assist: replace unwrap with match r=matklad a=unrealhoang attempt on #3669 Co-authored-by: Unreal Hoang <[email protected]>
| * Assist: replace unwrap with matchUnreal Hoang2020-03-261-0/+4
| |
* | Get rid of ItemOrMacroAleksey Kladov2020-03-262-31/+10
|/
* Merge #3708bors[bot]2020-03-241-38/+65
|\ | | | | | | | | | | | | | | | | | | | | 3708: Generalise syntax rewriting infrastructure to allow removal of nodes r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * Generalise syntax rewriting infrastructure to allow removal of nodesAleksey Kladov2020-03-241-38/+65
| |
* | Merge #3705bors[bot]2020-03-241-3/+3
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 3705: Align naming r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * | Align namingAleksey Kladov2020-03-241-3/+3
| | |
* | | fill match arms with empty block rather than unit tupleJosh Mcguigan2020-03-241-0/+3
|/ /
* | review commentsJosh Mcguigan2020-03-231-1/+6
| |
* | implement fill match arm assist for tuple of enumsJosh Mcguigan2020-03-231-0/+9
|/
* Add support for macro in symbo_indexEdwin Cheng2020-03-221-1/+12
|
* Merge imports assistAleksey Kladov2020-03-182-0/+34
| | | | Work towards #2220
* Strongly-typed generic methods for editing nodesAleksey Kladov2020-03-181-47/+49
|
* Merge #3540bors[bot]2020-03-161-1/+15
|\ | | | | | | | | | | | | | | 3540: Swtches to rust SSR query check r=matklad a=mikhail-m1 related to #3186 Co-authored-by: Mikhail Modin <[email protected]>
| * Swtches to rust SSR query checkMikhail Modin2020-03-151-1/+15
| |
* | Merge pull request #3562 from FireofGods/display_for_nodeAleksey Kladov2020-03-121-0/+635
|\ \ | |/ |/| Add `std::fmt::Display` as a supertrait for `AstNode`
| * implementing Display for enums too.Fireassember2020-03-111-0/+635
| |
* | Add parse_to_token_treeEdwin Cheng2020-03-081-0/+6
|/
* make::use_itemAleksey Kladov2020-03-061-0/+4
|
* Simplify creation of `T[,]`Aleksey Kladov2020-03-062-13/+4
|
* Rerail split_import API onto ASTAleksey Kladov2020-03-062-0/+39
| | | | | The code is more verbose and less efficient now, but should be reusable in add_import context as well
* Add with_use_treeAleksey Kladov2020-03-051-0/+10
|
* Implement concat macroEdwin Cheng2020-03-031-1/+7
|
* Rename ast::ImplBlock -> ast::ImplDefAleksey Kladov2020-02-292-15/+15
|
* Fix typoAleksey Kladov2020-02-291-1/+1
|
* Cleanup editing APIAleksey Kladov2020-02-291-6/+5
|
* More orthogonal API for building pathsAleksey Kladov2020-02-291-4/+7
|
* Refactor string literalsAleksey Kladov2020-02-271-60/+74
|