aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_parser/src/grammar
Commit message (Collapse)AuthorAgeFilesLines
...
* Merge #1881bors[bot]2019-09-201-1/+1
|\ | | | | | | | | | | | | | | 1881: don't confuse macro with != r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * don't confuse macro with !=Aleksey Kladov2019-09-201-1/+1
| | | | | | | | closes #1871
* | Replace usages of bump_any with bumpkjeremy2019-09-1913-80/+80
|/
* Merge #1848bors[bot]2019-09-151-10/+42
|\ | | | | | | | | | | | | | | | | | | | | | | 1848: Parse `..` as a full pattern r=matklad a=ecstatic-morse Resolves #1479. This PR implements [RFC 2707](https://github.com/rust-lang/rfcs/pull/2707) in the parser. It introduces a new `DotDotPat` AST node modeled on `PlaceholderPat` and changes the parsing of tuple and slice patterns to conform to the RFC. Notably, this PR does *not* change the resulting AST when `..` appears in a struct pattern (e.g. `Struct { a, b: c, .. }`). I *think* this is the behavior mandated by RFC 2707, but someone should confirm this. Co-authored-by: Dylan MacKenzie <[email protected]>
| * Parse `..` as a proper patternDylan MacKenzie2019-09-151-10/+42
| |
* | Allow an underscore as the identifier in `const` itemsDylan MacKenzie2019-09-152-2/+11
|/
* cleanup dollar handling in expressionsAleksey Kladov2019-09-102-40/+34
|
* WIP: switch to fully decomposed tokens internallyAleksey Kladov2019-09-107-140/+160
|
* rename bump -> bump_anyAleksey Kladov2019-09-0914-109/+109
|
* tiny simplificationAleksey Kladov2019-09-093-4/+7
|
* better error recovery for use treesAleksey Kladov2019-09-052-2/+5
|
* always wrap block into an expressionAleksey Kladov2019-09-022-2/+7
|
* cleanupAleksey Kladov2019-09-023-3/+3
|
* Handle `Struct { box i }` syntaxDylan MacKenzie2019-08-241-0/+3
| | | | | | Named structs can have `box` patterns that will bind to their fields. This is similar to the behavior of the `ref` and `mut` fields, but is at least a little bit surprising.
* Centralize `box` pattern tests in `patterns.rs`Dylan MacKenzie2019-08-242-7/+0
|
* Parse `BoxPat`Dylan MacKenzie2019-08-241-19/+32
|
* rename struct -> record, pos -> tupleAleksey Kladov2019-08-234-32/+32
|
* Add test for nested box patternDylan MacKenzie2019-08-221-0/+2
|
* Add BOX_KW to PATTERN_FIRSTDylan MacKenzie2019-08-221-1/+1
|
* Merge #1685bors[bot]2019-08-151-1/+13
|\ | | | | | | | | | | | | | | 1685: fix error of RangeFrom in for-loop r=DJMcNab a=bravomikekilo fix [issue-1542](https://github.com/rust-analyzer/rust-analyzer/issues/1542) @matklad Co-authored-by: bravomikekilo <[email protected]>
| * fix test positionbravomikekilo2019-08-141-10/+6
| |
| * fix error of RangeFrom in for-loopbravomikekilo2019-08-141-1/+17
| |
* | Merge #1676bors[bot]2019-08-148-12/+17
|\ \ | |/ |/| | | | | | | | | | | 1676: Fix for<'lifetime> for types specified by path r=matklad a=eupn Fixes #1467. Co-authored-by: Evgenii P <[email protected]>
| * Fix is_path_start to accept T![<], fix is_path_start usagesEvgenii P2019-08-138-13/+17
| |
| * Fix for<'lifetime> for types specified by pathEvgenii P2019-08-111-1/+2
| |
* | Merge #1636bors[bot]2019-08-131-7/+12
|\ \ | |/ |/| | | | | | | | | | | 1636: fix block parse problem r=matklad a=bravomikekilo try to fix [issue-1598](https://github.com/rust-analyzer/rust-analyzer/issues/1598). Co-authored-by: bravomikekilo <[email protected]>
| * add inline testbravomikekilo2019-08-131-0/+6
| |
| * fix block parse problembravomikekilo2019-08-031-7/+6
| |
* | Move numeric names inside of `NameRef`Aleksey Kladov2019-08-094-10/+8
| |
* | Make name_ref to accept numeric names optionallyEvgenii P2019-08-094-7/+7
| |
* | Parse tuple struct field initializationEvgenii P2019-08-091-1/+2
| |
* | Merge #1661bors[bot]2019-08-081-1/+12
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1661: Parse function parameters attributes r=matklad a=eupn Fixes #1397. The [RFC-2565](https://github.com/rust-lang/rfcs/blob/master/text/2565-formal-function-parameter-attributes.md) specifies `#[attributes]` to function parameters: ```rust fn foo(#[attr] a, #[unused] b, #[must_use] ...) { // ... } ``` This PR adds those attributes into grammar and to the parser, extending corresponding inline tests. Co-authored-by: Evgenii P <[email protected]>
| * | Fix parser tests according to reviewEvgenii P2019-08-081-13/+4
| | |
| * | Deduplicate while loop break conditionEvgenii P2019-08-081-2/+2
| | |
| * | Fix parser to correctly consume outer attrs before ellipsis paramEvgenii P2019-08-071-0/+4
| | |
| * | Fix variadic arg inline testEvgenii P2019-08-071-1/+1
| | |
| * | Add function parameters attributesEvgenii P2019-08-071-0/+16
| |/
* / assoc types boundsAleksey Kladov2019-08-071-0/+7
|/
* fix: parse box syntax inside parenthesescsmoe2019-07-221-0/+3
|
* add await to syntax, parser for await_exprUnreal Hoang2019-07-201-0/+12
|
* Remove parse error on array initializer attributesRyan Cumming2019-06-301-11/+0
| | | | | This is actually allowed by the `rustc` parser but most attributes will fail later due to attributes on expressions being experimental.
* Support attributes on array membersRyan Cumming2019-06-301-0/+28
| | | | | | | | | | | | 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-7/+20
|
* Merge #1415bors[bot]2019-06-241-1/+28
|\ | | | | | | | | | | | | | | | | 1415: fix: specialization r=matklad a=csmoe Closes #1402 r? @matklad Co-authored-by: csmoe <[email protected]>
| * fix: specialization(with blindly parsing)csmoe2019-06-191-1/+28
| | | | | | | | Change-Id: Ic5d2767e8781568d76d4d0013cd6081e95ae8a95
* | fix: box_patterncsmoe2019-06-193-5/+18
| | | | | | | | Change-Id: I45a856d74fb616d3bce33050f9e69d327186bd59
* | fix: box_syntax(#1412)csmoe2019-06-181-0/+5
|/ | | | Change-Id: I6e20e0163fa545de37226c1561b3b7103615626c
* fix: support existential typecsmoe2019-06-121-3/+13
|
* fix: never type with bindingcsmoe2019-06-071-1/+3
| | | | Change-Id: I14e1bc628b9d2dfdb1f40de3d3707f4e872767f2
* [#1083] Try block syntax: fix testsAndrey Tkachenko2019-06-061-7/+7
|