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 +150
-3
lines changed
test_data/parser/inline/ok Expand file tree Collapse file tree 3 files changed +150
-3
lines changed Original file line number Diff line number Diff line change @@ -75,6 +75,16 @@ fn pattern_single_r(p: &mut Parser<'_>, recovery_set: TokenSet) {
7575 // Some(1..) => ()
7676 // }
7777 //
78+ // match () {
79+ // S { a: 0 } => (),
80+ // S { a: 1.. } => (),
81+ // }
82+ //
83+ // match () {
84+ // [0] => (),
85+ // [1..] => (),
86+ // }
87+ //
7888 // match (10 as u8, 5 as u8) {
7989 // (0, _) => (),
8090 // (1.., _) => ()
@@ -88,9 +98,20 @@ fn pattern_single_r(p: &mut Parser<'_>, recovery_set: TokenSet) {
8898 let m = lhs. precede ( p) ;
8999 p. bump ( range_op) ;
90100
91- // `0 .. =>` or `let 0 .. =` or `Some(0 .. )`
92- // ^ ^ ^
93- if p. at ( T ! [ =] ) | p. at ( T ! [ ')' ] ) | p. at ( T ! [ , ] ) {
101+ // testing if we're at one of the following positions:
102+ // `0 .. =>`
103+ // ^
104+ // `let 0 .. =`
105+ // ^
106+ // (1.., _)
107+ // ^
108+ // `Some(0 .. )`
109+ // ^
110+ // `S { t: 0.. }`
111+ // ^
112+ // `[0..]`
113+ // ^
114+ if p. at ( T ! [ =] ) | p. at ( T ! [ ')' ] ) | p. at ( T ! [ , ] ) | p. at ( T ! [ '}' ] ) | p. at ( T ! [ ']' ] ) {
94115 // test half_open_range_pat
95116 // fn f() { let 0 .. = 1u32; }
96117 } else {
Original file line number Diff line number Diff line change @@ -172,6 +172,122 @@ SOURCE_FILE
172172 WHITESPACE "\n "
173173 R_CURLY "}"
174174 WHITESPACE "\n\n "
175+ EXPR_STMT
176+ MATCH_EXPR
177+ MATCH_KW "match"
178+ WHITESPACE " "
179+ TUPLE_EXPR
180+ L_PAREN "("
181+ R_PAREN ")"
182+ WHITESPACE " "
183+ MATCH_ARM_LIST
184+ L_CURLY "{"
185+ WHITESPACE "\n "
186+ MATCH_ARM
187+ RECORD_PAT
188+ PATH
189+ PATH_SEGMENT
190+ NAME_REF
191+ IDENT "S"
192+ WHITESPACE " "
193+ RECORD_PAT_FIELD_LIST
194+ L_CURLY "{"
195+ WHITESPACE " "
196+ RECORD_PAT_FIELD
197+ NAME_REF
198+ IDENT "a"
199+ COLON ":"
200+ WHITESPACE " "
201+ LITERAL_PAT
202+ LITERAL
203+ INT_NUMBER "0"
204+ WHITESPACE " "
205+ R_CURLY "}"
206+ WHITESPACE " "
207+ FAT_ARROW "=>"
208+ WHITESPACE " "
209+ TUPLE_EXPR
210+ L_PAREN "("
211+ R_PAREN ")"
212+ COMMA ","
213+ WHITESPACE "\n "
214+ MATCH_ARM
215+ RECORD_PAT
216+ PATH
217+ PATH_SEGMENT
218+ NAME_REF
219+ IDENT "S"
220+ WHITESPACE " "
221+ RECORD_PAT_FIELD_LIST
222+ L_CURLY "{"
223+ WHITESPACE " "
224+ RECORD_PAT_FIELD
225+ NAME_REF
226+ IDENT "a"
227+ COLON ":"
228+ WHITESPACE " "
229+ RANGE_PAT
230+ LITERAL_PAT
231+ LITERAL
232+ INT_NUMBER "1"
233+ DOT2 ".."
234+ WHITESPACE " "
235+ R_CURLY "}"
236+ WHITESPACE " "
237+ FAT_ARROW "=>"
238+ WHITESPACE " "
239+ TUPLE_EXPR
240+ L_PAREN "("
241+ R_PAREN ")"
242+ COMMA ","
243+ WHITESPACE "\n "
244+ R_CURLY "}"
245+ WHITESPACE "\n\n "
246+ EXPR_STMT
247+ MATCH_EXPR
248+ MATCH_KW "match"
249+ WHITESPACE " "
250+ TUPLE_EXPR
251+ L_PAREN "("
252+ R_PAREN ")"
253+ WHITESPACE " "
254+ MATCH_ARM_LIST
255+ L_CURLY "{"
256+ WHITESPACE "\n "
257+ MATCH_ARM
258+ SLICE_PAT
259+ L_BRACK "["
260+ LITERAL_PAT
261+ LITERAL
262+ INT_NUMBER "0"
263+ R_BRACK "]"
264+ WHITESPACE " "
265+ FAT_ARROW "=>"
266+ WHITESPACE " "
267+ TUPLE_EXPR
268+ L_PAREN "("
269+ R_PAREN ")"
270+ COMMA ","
271+ WHITESPACE "\n "
272+ MATCH_ARM
273+ SLICE_PAT
274+ L_BRACK "["
275+ RANGE_PAT
276+ LITERAL_PAT
277+ LITERAL
278+ INT_NUMBER "1"
279+ DOT2 ".."
280+ R_BRACK "]"
281+ WHITESPACE " "
282+ FAT_ARROW "=>"
283+ WHITESPACE " "
284+ TUPLE_EXPR
285+ L_PAREN "("
286+ R_PAREN ")"
287+ COMMA ","
288+ WHITESPACE "\n "
289+ R_CURLY "}"
290+ WHITESPACE "\n\n "
175291 MATCH_EXPR
176292 MATCH_KW "match"
177293 WHITESPACE " "
Original file line number Diff line number Diff line change @@ -11,6 +11,16 @@ fn main() {
1111 Some ( 1 ..) => ( )
1212 }
1313
14+ match ( ) {
15+ S { a : 0 } => ( ) ,
16+ S { a : 1 .. } => ( ) ,
17+ }
18+
19+ match ( ) {
20+ [ 0 ] => ( ) ,
21+ [ 1 ..] => ( ) ,
22+ }
23+
1424 match ( 10 as u8 , 5 as u8 ) {
1525 ( 0 , _) => ( ) ,
1626 ( 1 .., _) => ( )
You can’t perform that action at this time.
0 commit comments