@@ -8,7 +8,7 @@ use crate::ast::{Path, PathSegment};
88use crate :: ptr:: P ;
99use crate :: token:: { self , CommentKind , Delimiter , Token } ;
1010use crate :: tokenstream:: { AttrAnnotatedTokenStream , AttrAnnotatedTokenTree } ;
11- use crate :: tokenstream:: { DelimSpan , Spacing , TokenTree , TreeAndSpacing } ;
11+ use crate :: tokenstream:: { DelimSpan , Spacing , TokenTree } ;
1212use crate :: tokenstream:: { LazyTokenStream , TokenStream } ;
1313use crate :: util:: comments;
1414
@@ -388,20 +388,20 @@ pub fn list_contains_name(items: &[NestedMetaItem], name: Symbol) -> bool {
388388}
389389
390390impl MetaItem {
391- fn token_trees_and_spacings ( & self ) -> Vec < TreeAndSpacing > {
391+ fn token_trees ( & self ) -> Vec < TokenTree > {
392392 let mut idents = vec ! [ ] ;
393393 let mut last_pos = BytePos ( 0_u32 ) ;
394394 for ( i, segment) in self . path . segments . iter ( ) . enumerate ( ) {
395395 let is_first = i == 0 ;
396396 if !is_first {
397397 let mod_sep_span =
398398 Span :: new ( last_pos, segment. ident . span . lo ( ) , segment. ident . span . ctxt ( ) , None ) ;
399- idents. push ( TokenTree :: token ( token:: ModSep , mod_sep_span) . into ( ) ) ;
399+ idents. push ( TokenTree :: token_alone ( token:: ModSep , mod_sep_span) ) ;
400400 }
401- idents. push ( TokenTree :: Token ( Token :: from_ast_ident ( segment. ident ) ) . into ( ) ) ;
401+ idents. push ( TokenTree :: Token ( Token :: from_ast_ident ( segment. ident ) , Spacing :: Alone ) ) ;
402402 last_pos = segment. ident . span . hi ( ) ;
403403 }
404- idents. extend ( self . kind . token_trees_and_spacings ( self . span ) ) ;
404+ idents. extend ( self . kind . token_trees ( self . span ) ) ;
405405 idents
406406 }
407407
@@ -411,12 +411,13 @@ impl MetaItem {
411411 {
412412 // FIXME: Share code with `parse_path`.
413413 let path = match tokens. next ( ) . map ( TokenTree :: uninterpolate) {
414- Some ( TokenTree :: Token ( Token {
415- kind : kind @ ( token:: Ident ( ..) | token:: ModSep ) ,
416- span ,
417- } ) ) => ' arm: {
414+ Some ( TokenTree :: Token (
415+ Token { kind : kind @ ( token:: Ident ( ..) | token:: ModSep ) , span } ,
416+ _ ,
417+ ) ) => ' arm: {
418418 let mut segments = if let token:: Ident ( name, _) = kind {
419- if let Some ( TokenTree :: Token ( Token { kind : token:: ModSep , .. } ) ) = tokens. peek ( )
419+ if let Some ( TokenTree :: Token ( Token { kind : token:: ModSep , .. } , _) ) =
420+ tokens. peek ( )
420421 {
421422 tokens. next ( ) ;
422423 vec ! [ PathSegment :: from_ident( Ident :: new( name, span) ) ]
@@ -427,14 +428,15 @@ impl MetaItem {
427428 vec ! [ PathSegment :: path_root( span) ]
428429 } ;
429430 loop {
430- if let Some ( TokenTree :: Token ( Token { kind : token:: Ident ( name, _) , span } ) ) =
431+ if let Some ( TokenTree :: Token ( Token { kind : token:: Ident ( name, _) , span } , _ ) ) =
431432 tokens. next ( ) . map ( TokenTree :: uninterpolate)
432433 {
433434 segments. push ( PathSegment :: from_ident ( Ident :: new ( name, span) ) ) ;
434435 } else {
435436 return None ;
436437 }
437- if let Some ( TokenTree :: Token ( Token { kind : token:: ModSep , .. } ) ) = tokens. peek ( )
438+ if let Some ( TokenTree :: Token ( Token { kind : token:: ModSep , .. } , _) ) =
439+ tokens. peek ( )
438440 {
439441 tokens. next ( ) ;
440442 } else {
@@ -444,7 +446,7 @@ impl MetaItem {
444446 let span = span. with_hi ( segments. last ( ) . unwrap ( ) . ident . span . hi ( ) ) ;
445447 Path { span, segments, tokens : None }
446448 }
447- Some ( TokenTree :: Token ( Token { kind : token:: Interpolated ( nt) , .. } ) ) => match * nt {
449+ Some ( TokenTree :: Token ( Token { kind : token:: Interpolated ( nt) , .. } , _ ) ) => match * nt {
448450 token:: Nonterminal :: NtMeta ( ref item) => return item. meta ( item. path . span ) ,
449451 token:: Nonterminal :: NtPath ( ref path) => ( * * path) . clone ( ) ,
450452 _ => return None ,
@@ -491,9 +493,9 @@ impl MetaItemKind {
491493 let mut tts = Vec :: new ( ) ;
492494 for ( i, item) in list. iter ( ) . enumerate ( ) {
493495 if i > 0 {
494- tts. push ( TokenTree :: token ( token:: Comma , span) . into ( ) ) ;
496+ tts. push ( TokenTree :: token_alone ( token:: Comma , span) ) ;
495497 }
496- tts. extend ( item. token_trees_and_spacings ( ) )
498+ tts. extend ( item. token_trees ( ) )
497499 }
498500 MacArgs :: Delimited (
499501 DelimSpan :: from_single ( span) ,
@@ -504,31 +506,28 @@ impl MetaItemKind {
504506 }
505507 }
506508
507- fn token_trees_and_spacings ( & self , span : Span ) -> Vec < TreeAndSpacing > {
509+ fn token_trees ( & self , span : Span ) -> Vec < TokenTree > {
508510 match * self {
509511 MetaItemKind :: Word => vec ! [ ] ,
510512 MetaItemKind :: NameValue ( ref lit) => {
511513 vec ! [
512- TokenTree :: token ( token:: Eq , span) . into ( ) ,
513- TokenTree :: Token ( lit. to_token( ) ) . into ( ) ,
514+ TokenTree :: token_alone ( token:: Eq , span) ,
515+ TokenTree :: Token ( lit. to_token( ) , Spacing :: Alone ) ,
514516 ]
515517 }
516518 MetaItemKind :: List ( ref list) => {
517519 let mut tokens = Vec :: new ( ) ;
518520 for ( i, item) in list. iter ( ) . enumerate ( ) {
519521 if i > 0 {
520- tokens. push ( TokenTree :: token ( token:: Comma , span) . into ( ) ) ;
522+ tokens. push ( TokenTree :: token_alone ( token:: Comma , span) ) ;
521523 }
522- tokens. extend ( item. token_trees_and_spacings ( ) )
524+ tokens. extend ( item. token_trees ( ) )
523525 }
524- vec ! [
525- TokenTree :: Delimited (
526- DelimSpan :: from_single( span) ,
527- Delimiter :: Parenthesis ,
528- TokenStream :: new( tokens) ,
529- )
530- . into( ) ,
531- ]
526+ vec ! [ TokenTree :: Delimited (
527+ DelimSpan :: from_single( span) ,
528+ Delimiter :: Parenthesis ,
529+ TokenStream :: new( tokens) ,
530+ ) ]
532531 }
533532 }
534533 }
@@ -540,7 +539,7 @@ impl MetaItemKind {
540539 let item = NestedMetaItem :: from_tokens ( & mut tokens) ?;
541540 result. push ( item) ;
542541 match tokens. next ( ) {
543- None | Some ( TokenTree :: Token ( Token { kind : token:: Comma , .. } ) ) => { }
542+ None | Some ( TokenTree :: Token ( Token { kind : token:: Comma , .. } , _ ) ) => { }
544543 _ => return None ,
545544 }
546545 }
@@ -554,7 +553,7 @@ impl MetaItemKind {
554553 Some ( TokenTree :: Delimited ( _, Delimiter :: Invisible , inner_tokens) ) => {
555554 MetaItemKind :: name_value_from_tokens ( & mut inner_tokens. into_trees ( ) )
556555 }
557- Some ( TokenTree :: Token ( token) ) => {
556+ Some ( TokenTree :: Token ( token, _ ) ) => {
558557 Lit :: from_token ( & token) . ok ( ) . map ( MetaItemKind :: NameValue )
559558 }
560559 _ => None ,
@@ -586,7 +585,7 @@ impl MetaItemKind {
586585 MetaItemKind :: list_from_tokens ( inner_tokens)
587586 }
588587 Some ( TokenTree :: Delimited ( ..) ) => None ,
589- Some ( TokenTree :: Token ( Token { kind : token:: Eq , .. } ) ) => {
588+ Some ( TokenTree :: Token ( Token { kind : token:: Eq , .. } , _ ) ) => {
590589 tokens. next ( ) ;
591590 MetaItemKind :: name_value_from_tokens ( tokens)
592591 }
@@ -603,10 +602,12 @@ impl NestedMetaItem {
603602 }
604603 }
605604
606- fn token_trees_and_spacings ( & self ) -> Vec < TreeAndSpacing > {
605+ fn token_trees ( & self ) -> Vec < TokenTree > {
607606 match * self {
608- NestedMetaItem :: MetaItem ( ref item) => item. token_trees_and_spacings ( ) ,
609- NestedMetaItem :: Literal ( ref lit) => vec ! [ TokenTree :: Token ( lit. to_token( ) ) . into( ) ] ,
607+ NestedMetaItem :: MetaItem ( ref item) => item. token_trees ( ) ,
608+ NestedMetaItem :: Literal ( ref lit) => {
609+ vec ! [ TokenTree :: Token ( lit. to_token( ) , Spacing :: Alone ) ]
610+ }
610611 }
611612 }
612613
@@ -615,7 +616,7 @@ impl NestedMetaItem {
615616 I : Iterator < Item = TokenTree > ,
616617 {
617618 match tokens. peek ( ) {
618- Some ( TokenTree :: Token ( token) )
619+ Some ( TokenTree :: Token ( token, _ ) )
619620 if let Ok ( lit) = Lit :: from_token ( token) =>
620621 {
621622 tokens. next ( ) ;
0 commit comments