aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_syntax
Commit message (Collapse)AuthorAgeFilesLines
...
* Prepare for spliting generated into tokens and nodesAleksey Kladov2020-04-093-9625/+9628
|
* Remove allocations from LCAAleksey Kladov2020-04-091-3/+13
| | | | | I haven't actually profiled this, but not allocating a hash map (or anything, really) seems like a good idea
* Parse correctly fn f<T>() where T: Fn() -> u8 + Send {}Luca Barbieri2020-04-092-0/+62
| | | | | We used to parse it as T: Fn() -> (u8 + Send), which is different from the rustc behavior of T: (Fn() -> u8) + Send
* Scale back to only two traitsAleksey Kladov2020-04-094-187/+1959
|
* Provide more complete AST accessors to support usage in rustcLuca Barbieri2020-04-095-104/+108
|
* Scale back the traitsAleksey Kladov2020-04-092-105/+3033
|
* Add AstElement trait, generate tokens, support tokens in enumsLuca Barbieri2020-04-082-65/+111
| | | | | | | | | - 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
* Fix warnings emitted when compiling as part of rustcLuca Barbieri2020-04-081-1/+1
|
* Merge pull request #3863 from Veetaha/feature/migrate-to-rastAleksey Kladov2020-04-07277-7/+7
|\ | | | | Migrate tests .txt -> .rast
| * Migrate tests .txt -> .rastveetaha2020-04-06277-7/+7
| | | | | | | | | | | | | | | | The sytax tree output files now use .rast extension (rust-analyzer syntax tree or rust abstract syntax tree (whatever)). This format has a editors/code/ra_syntax_tree.tmGrammar.json declaration that supplies nice syntax highlighting for .rast files.
* | Fix unnecessary braces warningsLaurențiu Nicola2020-04-061-6/+6
|/
* Remove rustc_lexer dependency in favour of rustc-ap-rustc_lexerest312020-04-061-1/+1
| | | | The latter is auto-published on a regular schedule (Right now weekly).
* 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-032-11/+52
| | | | | | | | | | | 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
* | Merge #3786bors[bot]2020-03-311-9/+20
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 3786: When adding match arm, don't let the floating comma r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * | When adding match arm, don't let the floating commaAleksey Kladov2020-03-311-9/+20
| | |
* | | Attach doc-comment to declaration if there are newlines in betweenLeander Tentrup2020-03-313-1/+32
|/ / | | | | | | This commit changes the parser to attach doc-comments to the corresponding declaration in case there are newlines in between the doc-comment and the declaration.
* | 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-283-10/+14
|
* 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
| |
* | Fix parsing lambdas with return typeAleksey Kladov2020-03-253-14/+62
|/ | | | | | | We should eat only a single block, and not whatever larger expression may start with a block. closes #3721
* Remove dead codeAleksey Kladov2020-03-251-11/+0
|
* Merge #3708bors[bot]2020-03-242-67/+174
|\ | | | | | | | | | | | | | | | | | | | | 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-242-67/+174
| |
* | 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
|/ /
* | update itertools version to 0.9.0Josh Mcguigan2020-03-231-1/+1
| |
* | 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
|
* Add identity expansion checkingEdwin Cheng2020-03-211-0/+4
|
* Support arbitrary discriminantsAleksey Kladov2020-03-202-0/+31
| | | | Closes #3661