aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_syntax
Commit message (Collapse)AuthorAgeFilesLines
...
* Support attributes on array membersRyan Cumming2019-06-306-0/+177
| | | | | | | | | | | | Array members are allow to have attributes such as `#[cfg]`. This is a bit tricky as we don't know if the first expression is an initializer or a member until we encounter a `;`. This reuses a trick from `stmt` where we remember if we saw an attribute and then raise an error if the first expression ends up being an initializer. This isn't perfect as the error isn't correctly located on the attribute or initializer; it ends up immediately after the `;`.
* fixed #1384zjy2019-06-282-0/+70
|
* Merge #1415bors[bot]2019-06-244-0/+121
|\ | | | | | | | | | | | | | | | | 1415: fix: specialization r=matklad a=csmoe Closes #1402 r? @matklad Co-authored-by: csmoe <[email protected]>
| * fix: specialization(with blindly parsing)csmoe2019-06-194-0/+121
| | | | | | | | Change-Id: Ic5d2767e8781568d76d4d0013cd6081e95ae8a95
* | fix: box_patterncsmoe2019-06-195-6/+69
| | | | | | | | Change-Id: I45a856d74fb616d3bce33050f9e69d327186bd59
* | fix: box_syntax(#1412)csmoe2019-06-181-0/+3
|/ | | | Change-Id: I6e20e0163fa545de37226c1561b3b7103615626c
* Fix formattingShotaro Yamada2019-06-151-7/+3
|
* Skip attrs in `Literal::token`Shotaro Yamada2019-06-151-2/+17
|
* Get rid of failure: ra_batch ra_cliMuhammad Mominul Huque2019-06-151-1/+1
|
* fix: support existential typecsmoe2019-06-125-3/+36
|
* fix: never type with bindingcsmoe2019-06-072-6/+38
| | | | Change-Id: I14e1bc628b9d2dfdb1f40de3d3707f4e872767f2
* [#1083] Try block syntax: fix testsAndrey Tkachenko2019-06-064-37/+34
|
* [#1083] Try block syntaxAndrey Tkachenko2019-06-065-0/+86
|
* fix: clean up warningscsmoe2019-06-061-3/+3
| | | | Change-Id: I91a468f6e846ac28574825b8ee7aa02fbff68f63
* Fix clippy::or_fun_callAlan Du2019-06-041-1/+1
|
* Fix clippy::single_char_patternAlan Du2019-06-041-1/+1
|
* :arrow_up: parking_lotAleksey Kladov2019-05-301-1/+0
|
* flip Into to FromAleksey Kladov2019-05-291-6/+6
|
* show error offsets in testsAleksey Kladov2019-05-2946-290/+299
|
* remove old parsing methodsAleksey Kladov2019-05-287-62/+54
|
* update test dataAleksey Kladov2019-05-2845-289/+290
|
* update testsAleksey Kladov2019-05-284-47/+36
|
* drop error from SOurceFile constructorAleksey Kladov2019-05-282-5/+5
|
* return errors from tree builderAleksey Kladov2019-05-281-3/+3
|
* drop errors from SyntaxNodeAleksey Kladov2019-05-282-9/+6
|
* add ParseAleksey Kladov2019-05-281-2/+26
|
* Make rainbows optionalPascal Hertleif2019-05-271-1/+2
|
* More clever highlighting, incl draft for structsPascal Hertleif2019-05-271-4/+0
|
* Hash based on binding name and shadow counterPascal Hertleif2019-05-271-1/+6
|
* Semantic highlighting spikePascal Hertleif2019-05-271-0/+4
| | | | | | | | | | Very simple approach: For each identifier, set the hash of the range where it's defined as its 'id' and use it in the VSCode extension to generate unique colors. Thus, the generated colors are per-file. They are also quite fragile, and I'm not entirely sure why. Looks like we need to make sure the same ranges aren't overwritten by a later request?
* Change TokenSource to iteration basedEdwin Cheng2019-05-253-17/+38
|
* sort hash maps for testsAleksey Kladov2019-05-211-1/+1
|
* add is_union to structs ASTAleksey Kladov2019-05-201-1/+17
|
* :arrow_up: text_unitAleksey Kladov2019-05-152-40/+27
|
* apply T! macro where it is possibleSergey Parilin2019-05-156-87/+86
|
* make AstId untypedAleksey Kladov2019-05-132-8/+9
|
* Merge #1257bors[bot]2019-05-131-0/+1
|\ | | | | | | | | | | | | | | 1257: Implemented tkn! macro for syntax kinds r=matklad a=pasa Implementation of #1248 Co-authored-by: Sergey Parilin <[email protected]>
| * Implemented T! macro for syntax kindsSergey Parilin2019-05-131-0/+1
| |
* | Handle auto traits & negative implsFlorian Diebold2019-05-111-0/+10
| | | | | | | | | | We don't pass field types to Chalk yet though, so the auto trait inference won't be correct.
* | share literal validation logic with compilerAleksey Kladov2019-05-0710-1201/+620
|/
* fill struct fields diagnosticSergey Parilin2019-05-062-6/+9
|
* Merge #1208bors[bot]2019-05-042-1/+2
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1208: [WIP] Goto for Macro's r=matklad a=Lapz Adds goto definition for macros. Currently only works for macros in the current crate ~~otherwise it panics~~. Proper macro resolution needs to be added for it to resolve macros in other crates. Todo - [X] Allow goto from macro calls - [X] Fix panics - [x] Add tests ![Screen Recording 2019-04-25 at 18 00 24](https://user-images.githubusercontent.com/19998186/56754499-1dd01c00-6785-11e9-9e9a-1e36de70cfa3.gif) Co-authored-by: Lenard Pratt <[email protected]>
| * Added local macro gotoLenard Pratt2019-05-042-1/+2
| |
* | Revert "eagarly clean astd maps"Aleksey Kladov2019-05-041-1/+1
| | | | | | | | | | | | This reverts commit 6c63a59425e256ce46d058807b64149297231982. This causes massive slowdowns: looks like we accidentally have some source-depndent
* | eagarly clean astd mapsAleksey Kladov2019-05-041-1/+1
| |
* | Add default type param in TypeParam NodeEdwin Cheng2019-05-033-1/+8
|/
* Add macro pat parsingEdwin Cheng2019-04-302-0/+39
|
* Merge #1213bors[bot]2019-04-285-105/+106
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1213: Make lexer produce only single character puncts r=matklad a=edwin0cheng As discussed in Zulip, this PR change `lexer` to produce only single char punct. * Remove producing `DOTDOTDOT, DOTDOTEQ, DOTDOT, COLONCOLON, EQEQ, FAT_ARROW, NEQ, THIN_ARROW` in lexer. * Add required code in parser to make sure everythings works fine. * Change some tests (Mainly because the `ast::token_tree` is different) Note: i think the use of `COLON` in rust is too overloaded :) Co-authored-by: Edwin Cheng <[email protected]>
| * Refactor parser handle mult-char punct internallyEdwin Cheng2019-04-285-105/+106
| |
* | Fix hover on the beginning of a nested expressionFlorian Diebold2019-04-281-3/+18
|/ | | | | | | | | | | | | | | | E.g. in ``` let foo = 1u32; if true { <|>foo; } ``` the hover shows `()`, the type of the whole if expression, instead of the more sensible `u32`. The reason for this was that the search for an expression was slightly left-biased: When on the edge between two tokens, it first looked at all ancestors of the left token and then of the right token. Instead merge the ancestors in ascending order, so that we get the smaller of the two possible expressions.