bors[bot]
c733993658
Merge #1881
...
1881: don't confuse macro with != r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-09-20 13:24:07 +00:00
Aleksey Kladov
0f70290b6e
don't confuse macro with !=
...
closes #1871
2019-09-20 16:23:24 +03:00
kjeremy
883edd002e
Replace usages of bump_any with bump
2019-09-19 15:51:46 -04:00
bors[bot]
2d79a1ad83
Merge #1848
...
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 <ecstaticmorse@gmail.com>
2019-09-15 07:10:16 +00:00
Dylan MacKenzie
4a3a15f0e7
Parse ..
as a proper pattern
2019-09-14 17:08:22 -07:00
Dylan MacKenzie
426112c97e
Add DotDotPat
to AST
...
This is modeled on `PlaceholderPat`.
2019-09-14 17:08:22 -07:00
Dylan MacKenzie
253a18f938
Allow an underscore as the identifier in const
items
2019-09-14 16:31:09 -07:00
Aleksey Kladov
3c68da792b
don't break parser error recovery in presence of macros
...
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!
2019-09-12 12:38:07 +03:00
Aleksey Kladov
b9d9db83d1
cleanup dollar handling in expressions
2019-09-10 21:28:27 +03:00
Aleksey Kladov
1c5800dee8
"Fix" mbe to work with decomposed tokens
...
We regressed $i * 2 where $i = 1 + 1, need to fix that!
2019-09-10 15:56:05 +03:00
Aleksey Kladov
40170885e7
WIP: switch to fully decomposed tokens internally
2019-09-10 15:46:39 +03:00
Aleksey Kladov
d8aa9a1d81
introduce bump as a better-checked alternative to bump_any
2019-09-10 01:03:00 +03:00
Aleksey Kladov
e2b378ef7e
rename bump -> bump_any
2019-09-10 01:00:38 +03:00
Aleksey Kladov
7910202ecd
tiny simplification
2019-09-09 13:23:41 +03:00
Aleksey Kladov
b2be998b7b
better error recovery for use trees
2019-09-05 19:53:07 +03:00
Aleksey Kladov
3c2dea7f55
always wrap block into an expression
2019-09-02 20:15:51 +03:00
Aleksey Kladov
c89abd4262
simplify
2019-09-02 18:58:21 +03:00
Aleksey Kladov
32bebfaf0e
cleanup
2019-09-02 17:37:48 +03:00
Dylan MacKenzie
c08ad1cf8a
Handle Struct { box i }
syntax
...
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.
2019-08-23 16:20:18 -07:00
Dylan MacKenzie
83433cd1f0
Centralize box
pattern tests in patterns.rs
2019-08-23 16:19:53 -07:00
Dylan MacKenzie
ab51f57e1d
Parse BoxPat
2019-08-23 16:07:11 -07:00
Dylan MacKenzie
e6f3790106
Add BoxPat
variant
2019-08-23 15:11:34 -07:00
Aleksey Kladov
5b18a4eef9
rename struct -> record, pos -> tuple
2019-08-23 16:59:50 +03:00
Dylan MacKenzie
3e14b16c4d
Add test for nested box pattern
2019-08-22 12:53:54 -07:00
Dylan MacKenzie
f3b320adf4
Add BOX_KW to PATTERN_FIRST
2019-08-22 12:33:03 -07:00
Aleksey Kladov
00ccc6c292
use derive(Debug) for SyntaxKind
2019-08-19 13:11:51 +03:00
Aleksey Kladov
038975b348
plug new boilerplate_gen into ra_tools
2019-08-19 12:26:34 +03:00
Aleksey Kladov
832b40a075
use new quote-generated syntax kinds
2019-08-19 11:42:39 +03:00
bors[bot]
5ed6a13a2c
Merge #1685
...
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 <bmk1221@126.com>
2019-08-15 05:49:13 +00:00
bors[bot]
19e0d7d596
Merge #1676
...
1676: Fix for<'lifetime> for types specified by path r=matklad a=eupn
Fixes #1467 .
Co-authored-by: Evgenii P <eupn@protonmail.com>
2019-08-14 15:10:31 +00:00
bravomikekilo
4f31fed362
fix test position
2019-08-14 21:20:04 +08:00
bravomikekilo
2bebdf0b37
fix error of RangeFrom in for-loop
2019-08-14 11:55:21 +08:00
Evgenii P
8222a1fddf
Fix is_path_start to accept T![<], fix is_path_start usages
2019-08-13 22:36:01 +07:00
bors[bot]
978e3e384b
Merge #1636
...
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 <bmk1221@126.com>
2019-08-13 12:46:47 +00:00
bravomikekilo
eb0e9bd981
add inline test
2019-08-13 18:17:10 +08:00
Evgenii P
f1e62501c3
Fix for<'lifetime> for types specified by path
2019-08-11 16:56:05 +07:00
Aleksey Kladov
f3ee5a1509
Move numeric names inside of NameRef
2019-08-09 12:16:47 +02:00
Evgenii P
fa24e20867
Make name_ref to accept numeric names optionally
2019-08-09 16:08:36 +07:00
Evgenii P
957b5ed23a
Parse tuple struct field initialization
2019-08-09 15:38:52 +07:00
bors[bot]
87608904f6
Merge #1661
...
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 <eupn@protonmail.com>
2019-08-08 13:04:28 +00:00
Evgenii P
6fa2d82147
Fix parser tests according to review
2019-08-08 09:12:07 +07:00
Evgenii P
77f4ab3e9b
Deduplicate while loop break condition
2019-08-08 08:58:28 +07:00
Aleksey Kladov
d6ab1af086
assoc types bounds
2019-08-07 21:00:02 +02:00
Evgenii P
79d4202194
Fix parser to correctly consume outer attrs before ellipsis param
2019-08-08 00:36:19 +07:00
Evgenii P
9ea36703d2
Fix variadic arg inline test
2019-08-07 23:48:21 +07:00
Evgenii P
3fb58c620c
Add function parameters attributes
2019-08-07 23:42:28 +07:00
Laurențiu Nicola
b118f7511c
Optimize Parser::is_composite a little
2019-08-05 16:53:54 +03:00
bravomikekilo
562359d706
fix block parse problem
2019-08-03 19:57:07 +08:00
csmoe
8fe58c3598
fix: parse box syntax inside parentheses
2019-07-22 20:52:10 +08:00
Unreal Hoang
3a7f07c62d
add await to syntax, parser for await_expr
2019-07-20 17:41:31 +09:00