@@ -13,7 +13,7 @@ use std::collections::HashMap;
13
13
use std:: panic:: { catch_unwind, AssertUnwindSafe } ;
14
14
15
15
use rustc_ast:: token:: { BinOpToken , Delimiter , Token , TokenKind } ;
16
- use rustc_ast:: tokenstream:: { TokenStream , TokenTree , TokenTreeCursor } ;
16
+ use rustc_ast:: tokenstream:: { RefTokenTreeCursor , TokenStream , TokenTree } ;
17
17
use rustc_ast:: { ast, ptr} ;
18
18
use rustc_ast_pretty:: pprust;
19
19
use rustc_span:: {
@@ -394,7 +394,7 @@ pub(crate) fn rewrite_macro_def(
394
394
}
395
395
396
396
let ts = def. body . tokens . clone ( ) ;
397
- let mut parser = MacroParser :: new ( ts. into_trees ( ) ) ;
397
+ let mut parser = MacroParser :: new ( ts. trees ( ) ) ;
398
398
let parsed_def = match parser. parse ( ) {
399
399
Some ( def) => def,
400
400
None => return snippet,
@@ -736,9 +736,9 @@ impl MacroArgParser {
736
736
self . buf . clear ( ) ;
737
737
}
738
738
739
- fn add_meta_variable ( & mut self , iter : & mut TokenTreeCursor ) -> Option < ( ) > {
739
+ fn add_meta_variable ( & mut self , iter : & mut RefTokenTreeCursor < ' _ > ) -> Option < ( ) > {
740
740
match iter. next ( ) {
741
- Some ( TokenTree :: Token (
741
+ Some ( & TokenTree :: Token (
742
742
Token {
743
743
kind : TokenKind :: Ident ( name, _) ,
744
744
..
@@ -768,7 +768,7 @@ impl MacroArgParser {
768
768
& mut self ,
769
769
inner : Vec < ParsedMacroArg > ,
770
770
delim : Delimiter ,
771
- iter : & mut TokenTreeCursor ,
771
+ iter : & mut RefTokenTreeCursor < ' _ > ,
772
772
) -> Option < ( ) > {
773
773
let mut buffer = String :: new ( ) ;
774
774
let mut first = true ;
@@ -868,11 +868,11 @@ impl MacroArgParser {
868
868
869
869
/// Returns a collection of parsed macro def's arguments.
870
870
fn parse ( mut self , tokens : TokenStream ) -> Option < Vec < ParsedMacroArg > > {
871
- let mut iter = tokens. into_trees ( ) ;
871
+ let mut iter = tokens. trees ( ) ;
872
872
873
873
while let Some ( tok) = iter. next ( ) {
874
874
match tok {
875
- TokenTree :: Token (
875
+ & TokenTree :: Token (
876
876
Token {
877
877
kind : TokenKind :: Dollar ,
878
878
span,
@@ -901,7 +901,7 @@ impl MacroArgParser {
901
901
self . add_meta_variable ( & mut iter) ?;
902
902
}
903
903
TokenTree :: Token ( ref t, _) => self . update_buffer ( t) ,
904
- TokenTree :: Delimited ( _delimited_span, delimited, ref tts) => {
904
+ & TokenTree :: Delimited ( _delimited_span, delimited, ref tts) => {
905
905
if !self . buf . is_empty ( ) {
906
906
if next_space ( & self . last_tok . kind ) == SpaceState :: Always {
907
907
self . add_separator ( ) ;
@@ -1119,12 +1119,12 @@ pub(crate) fn macro_style(mac: &ast::MacCall, context: &RewriteContext<'_>) -> D
1119
1119
1120
1120
// A very simple parser that just parses a macros 2.0 definition into its branches.
1121
1121
// Currently we do not attempt to parse any further than that.
1122
- struct MacroParser {
1123
- toks : TokenTreeCursor ,
1122
+ struct MacroParser < ' a > {
1123
+ toks : RefTokenTreeCursor < ' a > ,
1124
1124
}
1125
1125
1126
- impl MacroParser {
1127
- const fn new ( toks : TokenTreeCursor ) -> Self {
1126
+ impl < ' a > MacroParser < ' a > {
1127
+ const fn new ( toks : RefTokenTreeCursor < ' a > ) -> Self {
1128
1128
Self { toks }
1129
1129
}
1130
1130
@@ -1143,9 +1143,9 @@ impl MacroParser {
1143
1143
let tok = self . toks . next ( ) ?;
1144
1144
let ( lo, args_paren_kind) = match tok {
1145
1145
TokenTree :: Token ( ..) => return None ,
1146
- TokenTree :: Delimited ( delimited_span, d, _) => ( delimited_span. open . lo ( ) , d) ,
1146
+ & TokenTree :: Delimited ( delimited_span, d, _) => ( delimited_span. open . lo ( ) , d) ,
1147
1147
} ;
1148
- let args = TokenStream :: new ( vec ! [ tok] ) ;
1148
+ let args = TokenStream :: new ( vec ! [ tok. clone ( ) ] ) ;
1149
1149
match self . toks . next ( ) ? {
1150
1150
TokenTree :: Token (
1151
1151
Token {
0 commit comments