aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_parser/src/grammar
Commit message (Collapse)AuthorAgeFilesLines
...
* Fix parsing of "postfix" range expressions.Geoffry Song2019-11-151-30/+24
| | | | | | | | | | Right now they are handled in `postfix_dot_expr`, but that doesn't allow it to correctly handle precedence. Integrate it more tightly with the Pratt parser instead. Also includes a drive-by fix for parsing `match .. {}`. Fixes #2242.
* Simplify parsingAleksey Kladov2019-11-141-17/+17
|
* cargo xtask format with 1.39kjeremy2019-11-071-3/+3
|
* fix parsing of for loops inside expressionsAleksey Kladov2019-10-281-1/+2
| | | | closes #2051
* Merge #1951bors[bot]2019-10-081-1/+10
|\ | | | | | | | | | | | | | | | | | | | | | | | | 1951: Lower the precedence of the `as` operator. r=matklad a=goffrie Previously, the `as` operator was being parsed like a postfix expression, and therefore being given the highest possible precedence. That caused it to bind more tightly than prefix operators, which it should not. Instead, parse it somewhat like a normal binary expression with some special-casing. Fixes #1851. Co-authored-by: Geoffry Song <[email protected]>
| * Move tests aroundGeoffry Song2019-10-061-6/+5
| |
| * Lower the precedence of the `as` operator.Geoffry Song2019-10-031-2/+12
| | | | | | | | | | | | | | Previously, the `as` operator was being parsed like a postfix expression, and therefore being given the highest possible precedence. That caused it to bind more tightly than prefix operators, which it should not. Instead, parse it somewhat like a normal binary expression with some special-casing.
* | Fix parsing of block expressions in "forbid_structs" contexts.Geoffry Song2019-10-032-10/+25
|/ | | | | | Forbidding block expressions entirely is too strict; instead, we should only forbid them in contexts where we are parsing an optional RHS (i.e. the RHS of a range expression).
* Merge branch 'master' into feature/issue/1856Alexander Andreev2019-09-301-2/+17
|\ | | | | | | | | # Conflicts: # crates/ra_assists/src/ast_editor.rs
| * FixesuHOOCCOOHu2019-09-301-10/+8
| |
| * Parse correct AttrInputuHOOCCOOHu2019-09-301-2/+19
| |
* | Added test for check doc strings in crates.Alexander Andreev2019-09-3014-0/+28
|/ | | | #1856
* Support loop as argumentkjeremy2019-09-201-0/+1
|
* Simplify match armkjeremy2019-09-201-2/+1
|
* Merge #1884bors[bot]2019-09-201-2/+12
|\ | | | | | | | | | | | | | | 1884: Add indexing to record_field_pat r=matklad a=kjeremy Fixes #1870 Co-authored-by: kjeremy <[email protected]>
| * Apply suggestionkjeremy2019-09-201-3/+2
| |
| * Add indexing to record_field_patkjeremy2019-09-201-2/+13
| |
* | fix infinite loop in the parserAleksey Kladov2019-09-201-7/+11
|/ | | | closes #1866
* 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]>