@@ -263,9 +263,7 @@ fn generic_extension<'cx, 'tt>(
263
263
264
264
// Ignore the delimiters on the RHS.
265
265
let rhs = match & rhses[ i] {
266
- mbe:: TokenTree :: Delimited ( _, delimited) => {
267
- delimited. inner_tts ( ) . to_vec ( ) . clone ( )
268
- }
266
+ mbe:: TokenTree :: Delimited ( _, delimited) => delimited. tts . to_vec ( ) ,
269
267
_ => cx. span_bug ( sp, "malformed macro rhs" ) ,
270
268
} ;
271
269
let arm_span = rhses[ i] . span ( ) ;
@@ -470,17 +468,16 @@ pub fn compile_declarative_macro(
470
468
. iter ( )
471
469
. map ( |m| {
472
470
if let MatchedTokenTree ( ref tt) = * m {
473
- let mut tts = vec ! [ ] ;
474
- mbe:: quoted:: parse (
471
+ let tt = mbe:: quoted:: parse (
475
472
tt. clone ( ) . into ( ) ,
476
473
true ,
477
474
& sess. parse_sess ,
478
475
def. id ,
479
476
features,
480
477
edition,
481
- & mut tts ,
482
- ) ;
483
- let tt = tts . pop ( ) . unwrap ( ) ;
478
+ )
479
+ . pop ( )
480
+ . unwrap ( ) ;
484
481
valid &= check_lhs_nt_follows ( & sess. parse_sess , features, & def, & tt) ;
485
482
return tt;
486
483
}
@@ -495,17 +492,16 @@ pub fn compile_declarative_macro(
495
492
. iter ( )
496
493
. map ( |m| {
497
494
if let MatchedTokenTree ( ref tt) = * m {
498
- let mut tts = vec ! [ ] ;
499
- mbe:: quoted:: parse (
495
+ return mbe:: quoted:: parse (
500
496
tt. clone ( ) . into ( ) ,
501
497
false ,
502
498
& sess. parse_sess ,
503
499
def. id ,
504
500
features,
505
501
edition,
506
- & mut tts ,
507
- ) ;
508
- return tts . pop ( ) . unwrap ( ) ;
502
+ )
503
+ . pop ( )
504
+ . unwrap ( ) ;
509
505
}
510
506
sess. parse_sess . span_diagnostic . span_bug ( def. span , "wrong-structured lhs" )
511
507
} )
@@ -544,7 +540,7 @@ pub fn compile_declarative_macro(
544
540
// Ignore the delimiters around the matcher.
545
541
match lhs {
546
542
mbe:: TokenTree :: Delimited ( _, delimited) => {
547
- mbe:: macro_parser:: compute_locs ( & sess. parse_sess , delimited. inner_tts ( ) )
543
+ mbe:: macro_parser:: compute_locs ( & sess. parse_sess , & delimited. tts )
548
544
}
549
545
_ => sess. parse_sess . span_diagnostic . span_bug ( def. span , "malformed macro lhs" ) ,
550
546
}
@@ -576,7 +572,7 @@ fn check_lhs_nt_follows(
576
572
// lhs is going to be like TokenTree::Delimited(...), where the
577
573
// entire lhs is those tts. Or, it can be a "bare sequence", not wrapped in parens.
578
574
if let mbe:: TokenTree :: Delimited ( _, delimited) = lhs {
579
- check_matcher ( sess, features, def, delimited. inner_tts ( ) )
575
+ check_matcher ( sess, features, def, & delimited. tts )
580
576
} else {
581
577
let msg = "invalid macro matcher; matchers must be contained in balanced delimiters" ;
582
578
sess. span_diagnostic . span_err ( lhs. span ( ) , msg) ;
@@ -597,7 +593,7 @@ fn check_lhs_no_empty_seq(sess: &ParseSess, tts: &[mbe::TokenTree]) -> bool {
597
593
| TokenTree :: MetaVarDecl ( ..)
598
594
| TokenTree :: MetaVarExpr ( ..) => ( ) ,
599
595
TokenTree :: Delimited ( _, ref del) => {
600
- if !check_lhs_no_empty_seq ( sess, del. inner_tts ( ) ) {
596
+ if !check_lhs_no_empty_seq ( sess, & del. tts ) {
601
597
return false ;
602
598
}
603
599
}
@@ -692,9 +688,9 @@ impl FirstSets {
692
688
| TokenTree :: MetaVarExpr ( ..) => {
693
689
first. replace_with ( tt. clone ( ) ) ;
694
690
}
695
- TokenTree :: Delimited ( _span , ref delimited) => {
696
- build_recur ( sets, delimited. inner_tts ( ) ) ;
697
- first. replace_with ( delimited. open_tt ( ) . clone ( ) ) ;
691
+ TokenTree :: Delimited ( span , ref delimited) => {
692
+ build_recur ( sets, & delimited. tts ) ;
693
+ first. replace_with ( delimited. open_tt ( span ) ) ;
698
694
}
699
695
TokenTree :: Sequence ( sp, ref seq_rep) => {
700
696
let subfirst = build_recur ( sets, & seq_rep. tts ) ;
@@ -758,8 +754,8 @@ impl FirstSets {
758
754
first. add_one ( tt. clone ( ) ) ;
759
755
return first;
760
756
}
761
- TokenTree :: Delimited ( _span , ref delimited) => {
762
- first. add_one ( delimited. open_tt ( ) . clone ( ) ) ;
757
+ TokenTree :: Delimited ( span , ref delimited) => {
758
+ first. add_one ( delimited. open_tt ( span ) ) ;
763
759
return first;
764
760
}
765
761
TokenTree :: Sequence ( sp, ref seq_rep) => {
@@ -945,9 +941,9 @@ fn check_matcher_core(
945
941
suffix_first = build_suffix_first ( ) ;
946
942
}
947
943
}
948
- TokenTree :: Delimited ( _span , ref d) => {
949
- let my_suffix = TokenSet :: singleton ( d. close_tt ( ) . clone ( ) ) ;
950
- check_matcher_core ( sess, features, def, first_sets, d . inner_tts ( ) , & my_suffix) ;
944
+ TokenTree :: Delimited ( span , ref d) => {
945
+ let my_suffix = TokenSet :: singleton ( d. close_tt ( span ) ) ;
946
+ check_matcher_core ( sess, features, def, first_sets, & d . tts , & my_suffix) ;
951
947
// don't track non NT tokens
952
948
last. replace_with_irrelevant ( ) ;
953
949
0 commit comments