diff options
author | Aleksey Kladov <[email protected]> | 2018-08-14 09:46:46 +0100 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2018-08-14 09:46:46 +0100 |
commit | de02d2891ec7f7b295e33887d49de954f677387a (patch) | |
tree | 3c3526196a440d06217ef1e81bce9d9c62d49b59 /crates/libsyntax2 | |
parent | 2b828c68e8acda628d6e3a36827d1ffd9c9aaec6 (diff) |
full range expr
Diffstat (limited to 'crates/libsyntax2')
3 files changed, 34 insertions, 1 deletions
diff --git a/crates/libsyntax2/src/grammar/expressions/mod.rs b/crates/libsyntax2/src/grammar/expressions/mod.rs index e56f3d30e..feef5f1d6 100644 --- a/crates/libsyntax2/src/grammar/expressions/mod.rs +++ b/crates/libsyntax2/src/grammar/expressions/mod.rs | |||
@@ -174,10 +174,14 @@ fn lhs(p: &mut Parser, r: Restrictions) -> Option<CompletedMarker> { | |||
174 | p.bump(); | 174 | p.bump(); |
175 | PREFIX_EXPR | 175 | PREFIX_EXPR |
176 | } | 176 | } |
177 | // test full_range_expr | ||
178 | // fn foo() { xs[..]; } | ||
177 | DOTDOT => { | 179 | DOTDOT => { |
178 | m = p.start(); | 180 | m = p.start(); |
179 | p.bump(); | 181 | p.bump(); |
180 | expr_bp(p, r, 2); | 182 | if EXPR_FIRST.contains(p.current()) { |
183 | expr_bp(p, r, 2); | ||
184 | } | ||
181 | return Some(m.complete(p, RANGE_EXPR)); | 185 | return Some(m.complete(p, RANGE_EXPR)); |
182 | } | 186 | } |
183 | _ => { | 187 | _ => { |
diff --git a/crates/libsyntax2/tests/data/parser/inline/0102_full_range_expr.rs b/crates/libsyntax2/tests/data/parser/inline/0102_full_range_expr.rs new file mode 100644 index 000000000..ae21ad94c --- /dev/null +++ b/crates/libsyntax2/tests/data/parser/inline/0102_full_range_expr.rs | |||
@@ -0,0 +1 @@ | |||
fn foo() { xs[..]; } | |||
diff --git a/crates/libsyntax2/tests/data/parser/inline/0102_full_range_expr.txt b/crates/libsyntax2/tests/data/parser/inline/0102_full_range_expr.txt new file mode 100644 index 000000000..8e7b403c5 --- /dev/null +++ b/crates/libsyntax2/tests/data/parser/inline/0102_full_range_expr.txt | |||
@@ -0,0 +1,28 @@ | |||
1 | FILE@[0; 21) | ||
2 | FN_DEF@[0; 20) | ||
3 | FN_KW@[0; 2) | ||
4 | WHITESPACE@[2; 3) | ||
5 | NAME@[3; 6) | ||
6 | IDENT@[3; 6) "foo" | ||
7 | PARAM_LIST@[6; 8) | ||
8 | L_PAREN@[6; 7) | ||
9 | R_PAREN@[7; 8) | ||
10 | WHITESPACE@[8; 9) | ||
11 | BLOCK_EXPR@[9; 20) | ||
12 | L_CURLY@[9; 10) | ||
13 | WHITESPACE@[10; 11) | ||
14 | EXPR_STMT@[11; 18) | ||
15 | INDEX_EXPR@[11; 17) | ||
16 | PATH_EXPR@[11; 13) | ||
17 | PATH@[11; 13) | ||
18 | PATH_SEGMENT@[11; 13) | ||
19 | NAME_REF@[11; 13) | ||
20 | IDENT@[11; 13) "xs" | ||
21 | L_BRACK@[13; 14) | ||
22 | RANGE_EXPR@[14; 16) | ||
23 | DOTDOT@[14; 16) | ||
24 | R_BRACK@[16; 17) | ||
25 | SEMI@[17; 18) | ||
26 | WHITESPACE@[18; 19) | ||
27 | R_CURLY@[19; 20) | ||
28 | WHITESPACE@[20; 21) | ||