@@ -31,15 +31,14 @@ impl MetaTemplate {
31
31
edition : impl Copy + Fn ( SyntaxContextId ) -> Edition ,
32
32
pattern : & tt:: Subtree < Span > ,
33
33
) -> Result < Self , ParseError > {
34
- MetaTemplate :: parse ( edition, pattern, Mode :: Pattern , false )
34
+ MetaTemplate :: parse ( edition, pattern, Mode :: Pattern )
35
35
}
36
36
37
37
pub ( crate ) fn parse_template (
38
38
edition : impl Copy + Fn ( SyntaxContextId ) -> Edition ,
39
39
template : & tt:: Subtree < Span > ,
40
- new_meta_vars : bool ,
41
40
) -> Result < Self , ParseError > {
42
- MetaTemplate :: parse ( edition, template, Mode :: Template , new_meta_vars )
41
+ MetaTemplate :: parse ( edition, template, Mode :: Template )
43
42
}
44
43
45
44
pub ( crate ) fn iter ( & self ) -> impl Iterator < Item = & Op > {
@@ -50,13 +49,12 @@ impl MetaTemplate {
50
49
edition : impl Copy + Fn ( SyntaxContextId ) -> Edition ,
51
50
tt : & tt:: Subtree < Span > ,
52
51
mode : Mode ,
53
- new_meta_vars : bool ,
54
52
) -> Result < Self , ParseError > {
55
53
let mut src = TtIter :: new ( tt) ;
56
54
57
55
let mut res = Vec :: new ( ) ;
58
56
while let Some ( first) = src. peek_n ( 0 ) {
59
- let op = next_op ( edition, first, & mut src, mode, new_meta_vars ) ?;
57
+ let op = next_op ( edition, first, & mut src, mode) ?;
60
58
res. push ( op) ;
61
59
}
62
60
@@ -161,7 +159,6 @@ fn next_op(
161
159
first_peeked : & tt:: TokenTree < Span > ,
162
160
src : & mut TtIter < ' _ , Span > ,
163
161
mode : Mode ,
164
- new_meta_vars : bool ,
165
162
) -> Result < Op , ParseError > {
166
163
let res = match first_peeked {
167
164
tt:: TokenTree :: Leaf ( tt:: Leaf :: Punct ( p @ tt:: Punct { char : '$' , .. } ) ) => {
@@ -181,14 +178,14 @@ fn next_op(
181
178
tt:: TokenTree :: Subtree ( subtree) => match subtree. delimiter . kind {
182
179
tt:: DelimiterKind :: Parenthesis => {
183
180
let ( separator, kind) = parse_repeat ( src) ?;
184
- let tokens = MetaTemplate :: parse ( edition, subtree, mode, new_meta_vars ) ?;
181
+ let tokens = MetaTemplate :: parse ( edition, subtree, mode) ?;
185
182
Op :: Repeat { tokens, separator : separator. map ( Arc :: new) , kind }
186
183
}
187
184
tt:: DelimiterKind :: Brace => match mode {
188
185
Mode :: Template => {
189
- parse_metavar_expr ( new_meta_vars , & mut TtIter :: new ( subtree) ) . map_err (
190
- | ( ) | ParseError :: unexpected ( "invalid metavariable expression" ) ,
191
- ) ?
186
+ parse_metavar_expr ( & mut TtIter :: new ( subtree) ) . map_err ( | ( ) | {
187
+ ParseError :: unexpected ( "invalid metavariable expression" )
188
+ } ) ?
192
189
}
193
190
Mode :: Pattern => {
194
191
return Err ( ParseError :: unexpected (
@@ -260,7 +257,7 @@ fn next_op(
260
257
261
258
tt:: TokenTree :: Subtree ( subtree) => {
262
259
src. next ( ) . expect ( "first token already peeked" ) ;
263
- let tokens = MetaTemplate :: parse ( edition, subtree, mode, new_meta_vars ) ?;
260
+ let tokens = MetaTemplate :: parse ( edition, subtree, mode) ?;
264
261
Op :: Subtree { tokens, delimiter : subtree. delimiter }
265
262
}
266
263
} ;
@@ -343,7 +340,7 @@ fn parse_repeat(src: &mut TtIter<'_, Span>) -> Result<(Option<Separator>, Repeat
343
340
Err ( ParseError :: InvalidRepeat )
344
341
}
345
342
346
- fn parse_metavar_expr ( new_meta_vars : bool , src : & mut TtIter < ' _ , Span > ) -> Result < Op , ( ) > {
343
+ fn parse_metavar_expr ( src : & mut TtIter < ' _ , Span > ) -> Result < Op , ( ) > {
347
344
let func = src. expect_ident ( ) ?;
348
345
let args = src. expect_subtree ( ) ?;
349
346
@@ -355,18 +352,14 @@ fn parse_metavar_expr(new_meta_vars: bool, src: &mut TtIter<'_, Span>) -> Result
355
352
356
353
let op = match & func. sym {
357
354
s if sym:: ignore == * s => {
358
- if new_meta_vars {
359
- args. expect_dollar ( ) ?;
360
- }
355
+ args. expect_dollar ( ) ?;
361
356
let ident = args. expect_ident ( ) ?;
362
357
Op :: Ignore { name : ident. sym . clone ( ) , id : ident. span }
363
358
}
364
359
s if sym:: index == * s => Op :: Index { depth : parse_depth ( & mut args) ? } ,
365
360
s if sym:: len == * s => Op :: Len { depth : parse_depth ( & mut args) ? } ,
366
361
s if sym:: count == * s => {
367
- if new_meta_vars {
368
- args. expect_dollar ( ) ?;
369
- }
362
+ args. expect_dollar ( ) ?;
370
363
let ident = args. expect_ident ( ) ?;
371
364
let depth = if try_eat_comma ( & mut args) { Some ( parse_depth ( & mut args) ?) } else { None } ;
372
365
Op :: Count { name : ident. sym . clone ( ) , depth }
0 commit comments