@@ -74,7 +74,7 @@ pub use NamedMatch::*;
7474pub use ParseResult :: * ;
7575use TokenTreeOrTokenTreeSlice :: * ;
7676
77- use crate :: ast:: Ident ;
77+ use crate :: ast:: { Ident , Name } ;
7878use crate :: ext:: tt:: quoted:: { self , TokenTree } ;
7979use crate :: parse:: { Directory , ParseSess } ;
8080use crate :: parse:: parser:: { Parser , PathStyle } ;
@@ -429,8 +429,8 @@ pub fn parse_failure_msg(tok: TokenKind) -> String {
429429
430430/// Performs a token equality check, ignoring syntax context (that is, an unhygienic comparison)
431431fn token_name_eq ( t1 : & TokenKind , t2 : & TokenKind ) -> bool {
432- if let ( Some ( ( id1 , is_raw1) ) , Some ( ( id2 , is_raw2) ) ) = ( t1. ident ( ) , t2. ident ( ) ) {
433- id1 . name == id2 . name && is_raw1 == is_raw2
432+ if let ( Some ( ( name1 , is_raw1) ) , Some ( ( name2 , is_raw2) ) ) = ( t1. ident_name ( ) , t2. ident_name ( ) ) {
433+ name1 == name2 && is_raw1 == is_raw2
434434 } else if let ( Some ( name1) , Some ( name2) ) = ( t1. lifetime_name ( ) , t2. lifetime_name ( ) ) {
435435 name1 == name2
436436 } else {
@@ -466,8 +466,7 @@ fn inner_parse_loop<'root, 'tt>(
466466 next_items : & mut Vec < MatcherPosHandle < ' root , ' tt > > ,
467467 eof_items : & mut SmallVec < [ MatcherPosHandle < ' root , ' tt > ; 1 ] > ,
468468 bb_items : & mut SmallVec < [ MatcherPosHandle < ' root , ' tt > ; 1 ] > ,
469- token : & TokenKind ,
470- span : syntax_pos:: Span ,
469+ token : & Token ,
471470) -> ParseResult < ( ) > {
472471 // Pop items from `cur_items` until it is empty.
473472 while let Some ( mut item) = cur_items. pop ( ) {
@@ -510,7 +509,7 @@ fn inner_parse_loop<'root, 'tt>(
510509 // Add matches from this repetition to the `matches` of `up`
511510 for idx in item. match_lo ..item. match_hi {
512511 let sub = item. matches [ idx] . clone ( ) ;
513- let span = DelimSpan :: from_pair ( item. sp_open , span) ;
512+ let span = DelimSpan :: from_pair ( item. sp_open , token . span ) ;
514513 new_pos. push_match ( idx, MatchedSeq ( sub, span) ) ;
515514 }
516515
@@ -598,7 +597,7 @@ fn inner_parse_loop<'root, 'tt>(
598597 TokenTree :: MetaVarDecl ( _, _, id) => {
599598 // Built-in nonterminals never start with these tokens,
600599 // so we can eliminate them from consideration.
601- if may_begin_with ( id. name , token ) {
600+ if may_begin_with ( token , id. name ) {
602601 bb_items. push ( item) ;
603602 }
604603 }
@@ -698,7 +697,6 @@ pub fn parse(
698697 & mut eof_items,
699698 & mut bb_items,
700699 & parser. token ,
701- parser. span ,
702700 ) {
703701 Success ( _) => { }
704702 Failure ( token, msg) => return Failure ( token, msg) ,
@@ -806,10 +804,9 @@ pub fn parse(
806804
807805/// The token is an identifier, but not `_`.
808806/// We prohibit passing `_` to macros expecting `ident` for now.
809- fn get_macro_ident ( token : & TokenKind ) -> Option < ( Ident , bool ) > {
807+ fn get_macro_name ( token : & TokenKind ) -> Option < ( Name , bool ) > {
810808 match * token {
811- token:: Ident ( ident, is_raw) if ident. name != kw:: Underscore =>
812- Some ( ( ident, is_raw) ) ,
809+ token:: Ident ( name, is_raw) if name != kw:: Underscore => Some ( ( name, is_raw) ) ,
813810 _ => None ,
814811 }
815812}
@@ -818,7 +815,7 @@ fn get_macro_ident(token: &TokenKind) -> Option<(Ident, bool)> {
818815///
819816/// Returning `false` is a *stability guarantee* that such a matcher will *never* begin with that
820817/// token. Be conservative (return true) if not sure.
821- fn may_begin_with ( name : Symbol , token : & TokenKind ) -> bool {
818+ fn may_begin_with ( token : & Token , name : Name ) -> bool {
822819 /// Checks whether the non-terminal may contain a single (non-keyword) identifier.
823820 fn may_be_ident ( nt : & token:: Nonterminal ) -> bool {
824821 match * nt {
@@ -830,14 +827,14 @@ fn may_begin_with(name: Symbol, token: &TokenKind) -> bool {
830827 match name {
831828 sym:: expr => token. can_begin_expr ( ) ,
832829 sym:: ty => token. can_begin_type ( ) ,
833- sym:: ident => get_macro_ident ( token) . is_some ( ) ,
830+ sym:: ident => get_macro_name ( token) . is_some ( ) ,
834831 sym:: literal => token. can_begin_literal_or_bool ( ) ,
835- sym:: vis => match * token {
832+ sym:: vis => match token. kind {
836833 // The follow-set of :vis + "priv" keyword + interpolated
837834 token:: Comma | token:: Ident ( ..) | token:: Interpolated ( _) => true ,
838835 _ => token. can_begin_type ( ) ,
839836 } ,
840- sym:: block => match * token {
837+ sym:: block => match token. kind {
841838 token:: OpenDelim ( token:: Brace ) => true ,
842839 token:: Interpolated ( ref nt) => match * * nt {
843840 token:: NtItem ( _)
@@ -851,15 +848,15 @@ fn may_begin_with(name: Symbol, token: &TokenKind) -> bool {
851848 } ,
852849 _ => false ,
853850 } ,
854- sym:: path | sym:: meta => match * token {
851+ sym:: path | sym:: meta => match token. kind {
855852 token:: ModSep | token:: Ident ( ..) => true ,
856853 token:: Interpolated ( ref nt) => match * * nt {
857854 token:: NtPath ( _) | token:: NtMeta ( _) => true ,
858855 _ => may_be_ident ( & nt) ,
859856 } ,
860857 _ => false ,
861858 } ,
862- sym:: pat => match * token {
859+ sym:: pat => match token. kind {
863860 token:: Ident ( ..) | // box, ref, mut, and other identifiers (can stricten)
864861 token:: OpenDelim ( token:: Paren ) | // tuple pattern
865862 token:: OpenDelim ( token:: Bracket ) | // slice pattern
@@ -875,15 +872,15 @@ fn may_begin_with(name: Symbol, token: &TokenKind) -> bool {
875872 token:: Interpolated ( ref nt) => may_be_ident ( nt) ,
876873 _ => false ,
877874 } ,
878- sym:: lifetime => match * token {
875+ sym:: lifetime => match token. kind {
879876 token:: Lifetime ( _) => true ,
880877 token:: Interpolated ( ref nt) => match * * nt {
881878 token:: NtLifetime ( _) | token:: NtTT ( _) => true ,
882879 _ => false ,
883880 } ,
884881 _ => false ,
885882 } ,
886- _ => match * token {
883+ _ => match token. kind {
887884 token:: CloseDelim ( _) => false ,
888885 _ => true ,
889886 } ,
@@ -929,10 +926,10 @@ fn parse_nt<'a>(p: &mut Parser<'a>, sp: Span, name: Symbol) -> Nonterminal {
929926 sym:: literal => token:: NtLiteral ( panictry ! ( p. parse_literal_maybe_minus( ) ) ) ,
930927 sym:: ty => token:: NtTy ( panictry ! ( p. parse_ty( ) ) ) ,
931928 // this could be handled like a token, since it is one
932- sym:: ident => if let Some ( ( ident , is_raw) ) = get_macro_ident ( & p. token ) {
929+ sym:: ident => if let Some ( ( name , is_raw) ) = get_macro_name ( & p. token ) {
933930 let span = p. span ;
934931 p. bump ( ) ;
935- token:: NtIdent ( Ident :: new ( ident . name , span) , is_raw)
932+ token:: NtIdent ( Ident :: new ( name, span) , is_raw)
936933 } else {
937934 let token_str = pprust:: token_to_string ( & p. token ) ;
938935 p. fatal ( & format ! ( "expected ident, found {}" , & token_str) ) . emit ( ) ;
0 commit comments