@@ -13,7 +13,7 @@ use std::collections::HashMap;
1313use std:: panic:: { catch_unwind, AssertUnwindSafe } ;
1414
1515use rustc_ast:: token:: { BinOpToken , Delimiter , Token , TokenKind } ;
16- use rustc_ast:: tokenstream:: { TokenStream , TokenTree , TokenTreeCursor } ;
16+ use rustc_ast:: tokenstream:: { RefTokenTreeCursor , TokenStream , TokenTree } ;
1717use rustc_ast:: { ast, ptr} ;
1818use rustc_ast_pretty:: pprust;
1919use rustc_span:: {
@@ -394,7 +394,7 @@ pub(crate) fn rewrite_macro_def(
394394 }
395395
396396 let ts = def. body . tokens . clone ( ) ;
397- let mut parser = MacroParser :: new ( ts. into_trees ( ) ) ;
397+ let mut parser = MacroParser :: new ( ts. trees ( ) ) ;
398398 let parsed_def = match parser. parse ( ) {
399399 Some ( def) => def,
400400 None => return snippet,
@@ -736,9 +736,9 @@ impl MacroArgParser {
736736 self . buf . clear ( ) ;
737737 }
738738
739- fn add_meta_variable ( & mut self , iter : & mut TokenTreeCursor ) -> Option < ( ) > {
739+ fn add_meta_variable ( & mut self , iter : & mut RefTokenTreeCursor < ' _ > ) -> Option < ( ) > {
740740 match iter. next ( ) {
741- Some ( TokenTree :: Token (
741+ Some ( & TokenTree :: Token (
742742 Token {
743743 kind : TokenKind :: Ident ( name, _) ,
744744 ..
@@ -768,7 +768,7 @@ impl MacroArgParser {
768768 & mut self ,
769769 inner : Vec < ParsedMacroArg > ,
770770 delim : Delimiter ,
771- iter : & mut TokenTreeCursor ,
771+ iter : & mut RefTokenTreeCursor < ' _ > ,
772772 ) -> Option < ( ) > {
773773 let mut buffer = String :: new ( ) ;
774774 let mut first = true ;
@@ -868,11 +868,11 @@ impl MacroArgParser {
868868
869869 /// Returns a collection of parsed macro def's arguments.
870870 fn parse ( mut self , tokens : TokenStream ) -> Option < Vec < ParsedMacroArg > > {
871- let mut iter = tokens. into_trees ( ) ;
871+ let mut iter = tokens. trees ( ) ;
872872
873873 while let Some ( tok) = iter. next ( ) {
874874 match tok {
875- TokenTree :: Token (
875+ & TokenTree :: Token (
876876 Token {
877877 kind : TokenKind :: Dollar ,
878878 span,
@@ -901,7 +901,7 @@ impl MacroArgParser {
901901 self . add_meta_variable ( & mut iter) ?;
902902 }
903903 TokenTree :: Token ( ref t, _) => self . update_buffer ( t) ,
904- TokenTree :: Delimited ( _delimited_span, delimited, ref tts) => {
904+ & TokenTree :: Delimited ( _delimited_span, delimited, ref tts) => {
905905 if !self . buf . is_empty ( ) {
906906 if next_space ( & self . last_tok . kind ) == SpaceState :: Always {
907907 self . add_separator ( ) ;
@@ -1119,12 +1119,12 @@ pub(crate) fn macro_style(mac: &ast::MacCall, context: &RewriteContext<'_>) -> D
11191119
11201120// A very simple parser that just parses a macros 2.0 definition into its branches.
11211121// 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 > ,
11241124}
11251125
1126- impl MacroParser {
1127- const fn new ( toks : TokenTreeCursor ) -> Self {
1126+ impl < ' a > MacroParser < ' a > {
1127+ const fn new ( toks : RefTokenTreeCursor < ' a > ) -> Self {
11281128 Self { toks }
11291129 }
11301130
@@ -1143,9 +1143,9 @@ impl MacroParser {
11431143 let tok = self . toks . next ( ) ?;
11441144 let ( lo, args_paren_kind) = match tok {
11451145 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) ,
11471147 } ;
1148- let args = TokenStream :: new ( vec ! [ tok] ) ;
1148+ let args = TokenStream :: new ( vec ! [ tok. clone ( ) ] ) ;
11491149 match self . toks . next ( ) ? {
11501150 TokenTree :: Token (
11511151 Token {
0 commit comments