aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_parser
Commit message (Collapse)AuthorAgeFilesLines
* Introduce dedicated AST node for unionAleksey Kladov2019-11-253-12/+22
| | | | | | | | | | Although structs and unions have the same syntax and differ only in the keyword, re-using the single syntax node for both of them leads to confusion in practice, and propagates further down the hir in an upleasent way. Moreover, static and consts also share syntax, but we use different nodes for them.
* Disable doctestsAleksey Kladov2019-11-171-0/+3
|
* Move inclusive range check to validationGeoffry Song2019-11-151-3/+0
|
* 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-142-19/+19
|
* 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-3018-1/+35
|/ | | | #1856
* Start simplifying editing APIAleksey Kladov2019-09-261-1/+0
|
* simplifyAleksey Kladov2019-09-241-0/+5
|
* 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-1914-87/+87
|/
* Merge #1848bors[bot]2019-09-152-10/+43
|\ | | | | | | | | | | | | | | | | | | | | | | 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
| |
| * Add `DotDotPat` to ASTDylan MacKenzie2019-09-151-0/+1
| | | | | | | | This is modeled on `PlaceholderPat`.
* | Allow an underscore as the identifier in `const` itemsDylan MacKenzie2019-09-152-2/+11
|/
* don't break parser error recovery in presence of macrosAleksey Kladov2019-09-121-2/+2
| | | | | | | Parser has the invariant that `{}` are balanced. Previous code tried (unsucesfuly) maintain the same invariant for `$()` as well, but it was done in a rather ad-hoc manner: it's not at all obvious that it is possible to maintain both invariants!
* cleanup dollar handling in expressionsAleksey Kladov2019-09-103-96/+51
|
* "Fix" mbe to work with decomposed tokensAleksey Kladov2019-09-101-57/+0
| | | | We regressed $i * 2 where $i = 1 + 1, need to fix that!
* WIP: switch to fully decomposed tokens internallyAleksey Kladov2019-09-109-279/+277
|
* introduce bump as a better-checked alternative to bump_anyAleksey Kladov2019-09-092-2/+8
|
* rename bump -> bump_anyAleksey Kladov2019-09-0916-132/+132
|
* tiny simplificationAleksey Kladov2019-09-094-5/+8
|
* better error recovery for use treesAleksey Kladov2019-09-052-2/+5
|
* always wrap block into an expressionAleksey Kladov2019-09-023-3/+8
|
* simplifyAleksey Kladov2019-09-022-56/+35
|
* cleanupAleksey Kladov2019-09-025-90/+86
|
* 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
|
* Add `BoxPat` variantDylan MacKenzie2019-08-231-0/+1
|
* rename struct -> record, pos -> tupleAleksey Kladov2019-08-236-44/+44
|
* Add test for nested box patternDylan MacKenzie2019-08-221-0/+2
|
* Add BOX_KW to PATTERN_FIRSTDylan MacKenzie2019-08-221-1/+1
|
* use derive(Debug) for SyntaxKindAleksey Kladov2019-08-192-255/+9
|
* plug new boilerplate_gen into ra_toolsAleksey Kladov2019-08-191-4/+0
|