11//! Functions dealing with attributes and meta items.
22
33use std:: fmt:: Debug ;
4- use std:: iter;
54use std:: sync:: atomic:: { AtomicU32 , Ordering } ;
65
76use rustc_index:: bit_set:: GrowableBitSet ;
@@ -17,7 +16,9 @@ use crate::ast::{
1716} ;
1817use crate :: ptr:: P ;
1918use crate :: token:: { self , CommentKind , Delimiter , Token } ;
20- use crate :: tokenstream:: { DelimSpan , LazyAttrTokenStream , Spacing , TokenStream , TokenTree } ;
19+ use crate :: tokenstream:: {
20+ DelimSpan , LazyAttrTokenStream , Spacing , TokenStream , TokenStreamIter , TokenTree ,
21+ } ;
2122use crate :: util:: comments;
2223use crate :: util:: literal:: escape_string_symbol;
2324
@@ -366,10 +367,7 @@ impl MetaItem {
366367 }
367368 }
368369
369- fn from_tokens < ' a , I > ( iter : & mut iter:: Peekable < I > ) -> Option < MetaItem >
370- where
371- I : Iterator < Item = & ' a TokenTree > ,
372- {
370+ fn from_tokens ( iter : & mut TokenStreamIter < ' _ > ) -> Option < MetaItem > {
373371 // FIXME: Share code with `parse_path`.
374372 let tt = iter. next ( ) . map ( |tt| TokenTree :: uninterpolate ( tt) ) ;
375373 let path = match tt. as_deref ( ) {
@@ -439,7 +437,7 @@ impl MetaItem {
439437impl MetaItemKind {
440438 // public because it can be called in the hir
441439 pub fn list_from_tokens ( tokens : TokenStream ) -> Option < ThinVec < MetaItemInner > > {
442- let mut iter = tokens. iter ( ) . peekable ( ) ;
440+ let mut iter = tokens. iter ( ) ;
443441 let mut result = ThinVec :: new ( ) ;
444442 while iter. peek ( ) . is_some ( ) {
445443 let item = MetaItemInner :: from_tokens ( & mut iter) ?;
@@ -452,9 +450,7 @@ impl MetaItemKind {
452450 Some ( result)
453451 }
454452
455- fn name_value_from_tokens < ' a > (
456- iter : & mut impl Iterator < Item = & ' a TokenTree > ,
457- ) -> Option < MetaItemKind > {
453+ fn name_value_from_tokens ( iter : & mut TokenStreamIter < ' _ > ) -> Option < MetaItemKind > {
458454 match iter. next ( ) {
459455 Some ( TokenTree :: Delimited ( .., Delimiter :: Invisible ( _) , inner_tokens) ) => {
460456 MetaItemKind :: name_value_from_tokens ( & mut inner_tokens. iter ( ) )
@@ -466,9 +462,7 @@ impl MetaItemKind {
466462 }
467463 }
468464
469- fn from_tokens < ' a > (
470- iter : & mut iter:: Peekable < impl Iterator < Item = & ' a TokenTree > > ,
471- ) -> Option < MetaItemKind > {
465+ fn from_tokens ( iter : & mut TokenStreamIter < ' _ > ) -> Option < MetaItemKind > {
472466 match iter. peek ( ) {
473467 Some ( TokenTree :: Delimited ( .., Delimiter :: Parenthesis , inner_tokens) ) => {
474468 let inner_tokens = inner_tokens. clone ( ) ;
@@ -594,18 +588,15 @@ impl MetaItemInner {
594588 self . meta_item ( ) . is_some ( )
595589 }
596590
597- fn from_tokens < ' a , I > ( iter : & mut iter:: Peekable < I > ) -> Option < MetaItemInner >
598- where
599- I : Iterator < Item = & ' a TokenTree > ,
600- {
591+ fn from_tokens ( iter : & mut TokenStreamIter < ' _ > ) -> Option < MetaItemInner > {
601592 match iter. peek ( ) {
602593 Some ( TokenTree :: Token ( token, _) ) if let Some ( lit) = MetaItemLit :: from_token ( token) => {
603594 iter. next ( ) ;
604595 return Some ( MetaItemInner :: Lit ( lit) ) ;
605596 }
606597 Some ( TokenTree :: Delimited ( .., Delimiter :: Invisible ( _) , inner_tokens) ) => {
607598 iter. next ( ) ;
608- return MetaItemInner :: from_tokens ( & mut inner_tokens. iter ( ) . peekable ( ) ) ;
599+ return MetaItemInner :: from_tokens ( & mut inner_tokens. iter ( ) ) ;
609600 }
610601 _ => { }
611602 }
0 commit comments