This repository was archived by the owner on May 28, 2025. It is now read-only.
File tree Expand file tree Collapse file tree 3 files changed +138
-1
lines changed
test_data/parser/inline/ok Expand file tree Collapse file tree 3 files changed +138
-1
lines changed Original file line number Diff line number Diff line change @@ -5,6 +5,7 @@ pub(super) const PATTERN_FIRST: TokenSet =
5
5
T ! [ box] ,
6
6
T ! [ ref] ,
7
7
T ! [ mut ] ,
8
+ T ! [ const ] ,
8
9
T ! [ '(' ] ,
9
10
T ! [ '[' ] ,
10
11
T ! [ & ] ,
@@ -17,7 +18,7 @@ const PAT_TOP_FIRST: TokenSet = PATTERN_FIRST.union(TokenSet::new(&[T![|]]));
17
18
18
19
/// Set of possible tokens at the start of a range pattern's end bound.
19
20
const RANGE_PAT_END_FIRST : TokenSet =
20
- expressions:: LITERAL_FIRST . union ( paths:: PATH_FIRST ) . union ( TokenSet :: new ( & [ T ! [ -] ] ) ) ;
21
+ expressions:: LITERAL_FIRST . union ( paths:: PATH_FIRST ) . union ( TokenSet :: new ( & [ T ! [ -] , T ! [ const ] ] ) ) ;
21
22
22
23
pub ( crate ) fn pattern ( p : & mut Parser < ' _ > ) {
23
24
pattern_r ( p, PAT_RECOVERY_SET ) ;
@@ -499,6 +500,14 @@ fn box_pat(p: &mut Parser<'_>) -> CompletedMarker {
499
500
// fn main() {
500
501
// let const { 15 } = ();
501
502
// let const { foo(); bar() } = ();
503
+ //
504
+ // match 42 {
505
+ // const { 0 } .. const { 1 } => (),
506
+ // .. const { 0 } => (),
507
+ // const { 2 } .. => (),
508
+ // }
509
+ //
510
+ // let (const { () },) = ();
502
511
// }
503
512
fn const_block_pat ( p : & mut Parser < ' _ > ) -> CompletedMarker {
504
513
assert ! ( p. at( T ![ const ] ) ) ;
Original file line number Diff line number Diff line change @@ -74,6 +74,126 @@ SOURCE_FILE
74
74
L_PAREN "("
75
75
R_PAREN ")"
76
76
SEMICOLON ";"
77
+ WHITESPACE "\n\n "
78
+ EXPR_STMT
79
+ MATCH_EXPR
80
+ MATCH_KW "match"
81
+ WHITESPACE " "
82
+ LITERAL
83
+ INT_NUMBER "42"
84
+ WHITESPACE " "
85
+ MATCH_ARM_LIST
86
+ L_CURLY "{"
87
+ WHITESPACE "\n "
88
+ MATCH_ARM
89
+ RANGE_PAT
90
+ CONST_BLOCK_PAT
91
+ CONST_KW "const"
92
+ WHITESPACE " "
93
+ BLOCK_EXPR
94
+ STMT_LIST
95
+ L_CURLY "{"
96
+ WHITESPACE " "
97
+ LITERAL
98
+ INT_NUMBER "0"
99
+ WHITESPACE " "
100
+ R_CURLY "}"
101
+ WHITESPACE " "
102
+ DOT2 ".."
103
+ WHITESPACE " "
104
+ CONST_BLOCK_PAT
105
+ CONST_KW "const"
106
+ WHITESPACE " "
107
+ BLOCK_EXPR
108
+ STMT_LIST
109
+ L_CURLY "{"
110
+ WHITESPACE " "
111
+ LITERAL
112
+ INT_NUMBER "1"
113
+ WHITESPACE " "
114
+ R_CURLY "}"
115
+ WHITESPACE " "
116
+ FAT_ARROW "=>"
117
+ WHITESPACE " "
118
+ TUPLE_EXPR
119
+ L_PAREN "("
120
+ R_PAREN ")"
121
+ COMMA ","
122
+ WHITESPACE "\n "
123
+ MATCH_ARM
124
+ RANGE_PAT
125
+ DOT2 ".."
126
+ WHITESPACE " "
127
+ CONST_BLOCK_PAT
128
+ CONST_KW "const"
129
+ WHITESPACE " "
130
+ BLOCK_EXPR
131
+ STMT_LIST
132
+ L_CURLY "{"
133
+ WHITESPACE " "
134
+ LITERAL
135
+ INT_NUMBER "0"
136
+ WHITESPACE " "
137
+ R_CURLY "}"
138
+ WHITESPACE " "
139
+ FAT_ARROW "=>"
140
+ WHITESPACE " "
141
+ TUPLE_EXPR
142
+ L_PAREN "("
143
+ R_PAREN ")"
144
+ COMMA ","
145
+ WHITESPACE "\n "
146
+ MATCH_ARM
147
+ RANGE_PAT
148
+ CONST_BLOCK_PAT
149
+ CONST_KW "const"
150
+ WHITESPACE " "
151
+ BLOCK_EXPR
152
+ STMT_LIST
153
+ L_CURLY "{"
154
+ WHITESPACE " "
155
+ LITERAL
156
+ INT_NUMBER "2"
157
+ WHITESPACE " "
158
+ R_CURLY "}"
159
+ WHITESPACE " "
160
+ DOT2 ".."
161
+ WHITESPACE " "
162
+ FAT_ARROW "=>"
163
+ WHITESPACE " "
164
+ TUPLE_EXPR
165
+ L_PAREN "("
166
+ R_PAREN ")"
167
+ COMMA ","
168
+ WHITESPACE "\n "
169
+ R_CURLY "}"
170
+ WHITESPACE "\n\n "
171
+ LET_STMT
172
+ LET_KW "let"
173
+ WHITESPACE " "
174
+ TUPLE_PAT
175
+ L_PAREN "("
176
+ CONST_BLOCK_PAT
177
+ CONST_KW "const"
178
+ WHITESPACE " "
179
+ BLOCK_EXPR
180
+ STMT_LIST
181
+ L_CURLY "{"
182
+ WHITESPACE " "
183
+ TUPLE_EXPR
184
+ L_PAREN "("
185
+ R_PAREN ")"
186
+ WHITESPACE " "
187
+ R_CURLY "}"
188
+ COMMA ","
189
+ R_PAREN ")"
190
+ WHITESPACE " "
191
+ EQ "="
192
+ WHITESPACE " "
193
+ TUPLE_EXPR
194
+ L_PAREN "("
195
+ R_PAREN ")"
196
+ SEMICOLON ";"
77
197
WHITESPACE "\n"
78
198
R_CURLY "}"
79
199
WHITESPACE "\n"
Original file line number Diff line number Diff line change 1
1
fn main( ) {
2
2
let const { 15 } = ( ) ;
3
3
let const { foo ( ) ; bar ( ) } = ( ) ;
4
+
5
+ match 42 {
6
+ const { 0 } .. const { 1 } => ( ) ,
7
+ .. const { 0 } => ( ) ,
8
+ const { 2 } .. => ( ) ,
9
+ }
10
+
11
+ let ( const { ( ) } , ) = ( ) ;
4
12
}
You can’t perform that action at this time.
0 commit comments