File tree 5 files changed +41
-7
lines changed
tests/data/parser/inline/ok
5 files changed +41
-7
lines changed Original file line number Diff line number Diff line change @@ -58,6 +58,12 @@ const PAT_RECOVERY_SET: TokenSet =
58
58
fn atom_pat ( p : & mut Parser , recovery_set : TokenSet ) -> Option < CompletedMarker > {
59
59
let la0 = p. nth ( 0 ) ;
60
60
let la1 = p. nth ( 1 ) ;
61
+ if la0 == IDENT && la1 == T ! [ ..] {
62
+ let m = p. start ( ) ;
63
+ p. bump ( ) ;
64
+ p. bump ( ) ;
65
+ return Some ( m. complete ( p, SUBSLICE_PAT ) ) ;
66
+ }
61
67
if la0 == T ! [ ref]
62
68
|| la0 == T ! [ mut ]
63
69
|| la0 == T ! [ box]
@@ -225,6 +231,7 @@ fn tuple_pat(p: &mut Parser) -> CompletedMarker {
225
231
// test slice_pat
226
232
// fn main() {
227
233
// let [a, b, ..] = [];
234
+ // let [a, b..] = [];
228
235
// }
229
236
fn slice_pat ( p : & mut Parser ) -> CompletedMarker {
230
237
assert ! ( p. at( T ![ '[' ] ) ) ;
Original file line number Diff line number Diff line change @@ -165,6 +165,7 @@ pub enum SyntaxKind {
165
165
SLICE_PAT ,
166
166
RANGE_PAT ,
167
167
LITERAL_PAT ,
168
+ SUBSLICE_PAT ,
168
169
TUPLE_EXPR ,
169
170
ARRAY_EXPR ,
170
171
PAREN_EXPR ,
@@ -632,6 +633,7 @@ impl SyntaxKind {
632
633
SLICE_PAT => & SyntaxInfo { name : "SLICE_PAT" } ,
633
634
RANGE_PAT => & SyntaxInfo { name : "RANGE_PAT" } ,
634
635
LITERAL_PAT => & SyntaxInfo { name : "LITERAL_PAT" } ,
636
+ SUBSLICE_PAT => & SyntaxInfo { name : "SUBSLICE_PAT" } ,
635
637
TUPLE_EXPR => & SyntaxInfo { name : "TUPLE_EXPR" } ,
636
638
ARRAY_EXPR => & SyntaxInfo { name : "ARRAY_EXPR" } ,
637
639
PAREN_EXPR => & SyntaxInfo { name : "PAREN_EXPR" } ,
Original file line number Diff line number Diff line change @@ -168,6 +168,7 @@ Grammar(
168
168
"SLICE_PAT" ,
169
169
"RANGE_PAT" ,
170
170
"LITERAL_PAT" ,
171
+ "SUBSLICE_PAT" ,
171
172
172
173
// atoms
173
174
"TUPLE_EXPR" ,
@@ -686,7 +687,7 @@ Grammar(
686
687
"LifetimeArg" : (),
687
688
688
689
"MacroItems" : (
689
- traits : [ "ModuleItemOwner" , "FnDefOwner" ],
690
+ traits : [ "ModuleItemOwner" , "FnDefOwner" ],
690
691
),
691
692
692
693
"MacroStmts" : (
Original file line number Diff line number Diff line change 1
1
fn main ( ) {
2
2
let [ a, b, ..] = [ ] ;
3
+ let [ a, b..] = [ ] ;
3
4
}
Original file line number Diff line number Diff line change 1
- SOURCE_FILE@[0; 39 )
2
- FN_DEF@[0; 38 )
1
+ SOURCE_FILE@[0; 62 )
2
+ FN_DEF@[0; 61 )
3
3
FN_KW@[0; 2) "fn"
4
4
WHITESPACE@[2; 3) " "
5
5
NAME@[3; 7)
@@ -8,7 +8,7 @@ SOURCE_FILE@[0; 39)
8
8
L_PAREN@[7; 8) "("
9
9
R_PAREN@[8; 9) ")"
10
10
WHITESPACE@[9; 10) " "
11
- BLOCK@[10; 38 )
11
+ BLOCK@[10; 61 )
12
12
L_CURLY@[10; 11) "{"
13
13
WHITESPACE@[11; 16) "\n "
14
14
LET_STMT@[16; 36)
@@ -35,6 +35,29 @@ SOURCE_FILE@[0; 39)
35
35
L_BRACK@[33; 34) "["
36
36
R_BRACK@[34; 35) "]"
37
37
SEMI@[35; 36) ";"
38
- WHITESPACE@[36; 37) "\n"
39
- R_CURLY@[37; 38) "}"
40
- WHITESPACE@[38; 39) "\n"
38
+ WHITESPACE@[36; 41) "\n "
39
+ LET_STMT@[41; 59)
40
+ LET_KW@[41; 44) "let"
41
+ WHITESPACE@[44; 45) " "
42
+ SLICE_PAT@[45; 53)
43
+ L_BRACK@[45; 46) "["
44
+ BIND_PAT@[46; 47)
45
+ NAME@[46; 47)
46
+ IDENT@[46; 47) "a"
47
+ COMMA@[47; 48) ","
48
+ WHITESPACE@[48; 49) " "
49
+ SUBSLICE_PAT@[49; 52)
50
+ IDENT@[49; 50) "b"
51
+ DOTDOT@[50; 52) ".."
52
+ R_BRACK@[52; 53) "]"
53
+ WHITESPACE@[53; 54) " "
54
+ EQ@[54; 55) "="
55
+ WHITESPACE@[55; 56) " "
56
+ ARRAY_EXPR@[56; 58)
57
+ L_BRACK@[56; 57) "["
58
+ R_BRACK@[57; 58) "]"
59
+ SEMI@[58; 59) ";"
60
+ WHITESPACE@[59; 60) "\n"
61
+ R_CURLY@[60; 61) "}"
62
+ WHITESPACE@[61; 62) "\n"
63
+
You can’t perform that action at this time.
0 commit comments