1+ use rustc_ast:: token:: Token ;
12use rustc_ast:: Path ;
23use rustc_errors:: { fluent, AddToDiagnostic , Applicability , EmissionGuarantee , IntoDiagnostic } ;
34use rustc_macros:: { Diagnostic , Subdiagnostic } ;
45use rustc_session:: errors:: ExprParenthesesNeeded ;
56use rustc_span:: symbol:: Ident ;
67use rustc_span:: { Span , Symbol } ;
78
8- use crate :: parser:: { TokenDescription , TokenDescriptionKind } ;
9+ use crate :: parser:: TokenDescription ;
910
1011#[ derive( Diagnostic ) ]
1112#[ diag( parser:: maybe_report_ambiguous_plus) ]
@@ -572,7 +573,7 @@ pub(crate) struct FoundExprWouldBeStmt {
572573 #[ primary_span]
573574 #[ label]
574575 pub span : Span ,
575- pub token : String ,
576+ pub token : Token ,
576577 #[ subdiagnostic]
577578 pub suggestion : ExprParenthesesNeeded ,
578579}
@@ -871,7 +872,7 @@ pub(crate) struct SuffixedLiteralInAttribute {
871872pub ( crate ) struct InvalidMetaItem {
872873 #[ primary_span]
873874 pub span : Span ,
874- pub token : String ,
875+ pub token : Token ,
875876}
876877
877878#[ derive( Subdiagnostic ) ]
@@ -908,22 +909,22 @@ pub(crate) enum ExpectedIdentifierFound {
908909}
909910
910911impl ExpectedIdentifierFound {
911- pub fn new ( token_descr_kind : Option < TokenDescriptionKind > , span : Span ) -> Self {
912- ( match token_descr_kind {
913- Some ( TokenDescriptionKind :: ReservedIdentifier ) => {
912+ pub fn new ( token_descr : Option < TokenDescription > , span : Span ) -> Self {
913+ ( match token_descr {
914+ Some ( TokenDescription :: ReservedIdentifier ) => {
914915 ExpectedIdentifierFound :: ReservedIdentifier
915916 }
916- Some ( TokenDescriptionKind :: Keyword ) => ExpectedIdentifierFound :: Keyword ,
917- Some ( TokenDescriptionKind :: ReservedKeyword ) => ExpectedIdentifierFound :: ReservedKeyword ,
918- Some ( TokenDescriptionKind :: DocComment ) => ExpectedIdentifierFound :: DocComment ,
917+ Some ( TokenDescription :: Keyword ) => ExpectedIdentifierFound :: Keyword ,
918+ Some ( TokenDescription :: ReservedKeyword ) => ExpectedIdentifierFound :: ReservedKeyword ,
919+ Some ( TokenDescription :: DocComment ) => ExpectedIdentifierFound :: DocComment ,
919920 None => ExpectedIdentifierFound :: Other ,
920921 } ) ( span)
921922 }
922923}
923924
924925pub ( crate ) struct ExpectedIdentifier {
925926 pub span : Span ,
926- pub token_descr : TokenDescription ,
927+ pub token : Token ,
927928 pub suggest_raw : Option < SuggEscapeToUseAsIdentifier > ,
928929 pub suggest_remove_comma : Option < SuggRemoveComma > ,
929930}
@@ -933,29 +934,31 @@ impl<'a, G: EmissionGuarantee> IntoDiagnostic<'a, G> for ExpectedIdentifier {
933934 self ,
934935 handler : & ' a rustc_errors:: Handler ,
935936 ) -> rustc_errors:: DiagnosticBuilder < ' a , G > {
936- let mut diag = handler. struct_diagnostic ( match self . token_descr . kind {
937- Some ( TokenDescriptionKind :: ReservedIdentifier ) => {
937+ let token_descr = super :: parser:: TokenDescription :: from_token ( & self . token ) ;
938+
939+ let mut diag = handler. struct_diagnostic ( match token_descr {
940+ Some ( TokenDescription :: ReservedIdentifier ) => {
938941 fluent:: parser:: expected_identifier_found_reserved_identifier_str
939942 }
940- Some ( TokenDescriptionKind :: Keyword ) => {
943+ Some ( TokenDescription :: Keyword ) => {
941944 fluent:: parser:: expected_identifier_found_keyword_str
942945 }
943- Some ( TokenDescriptionKind :: ReservedKeyword ) => {
946+ Some ( TokenDescription :: ReservedKeyword ) => {
944947 fluent:: parser:: expected_identifier_found_reserved_keyword_str
945948 }
946- Some ( TokenDescriptionKind :: DocComment ) => {
949+ Some ( TokenDescription :: DocComment ) => {
947950 fluent:: parser:: expected_identifier_found_doc_comment_str
948951 }
949952 None => fluent:: parser:: expected_identifier_found_str,
950953 } ) ;
951954 diag. set_span ( self . span ) ;
952- diag. set_arg ( "token_str " , self . token_descr . name ) ;
955+ diag. set_arg ( "token " , self . token ) ;
953956
954957 if let Some ( sugg) = self . suggest_raw {
955958 sugg. add_to_diagnostic ( & mut diag) ;
956959 }
957960
958- ExpectedIdentifierFound :: new ( self . token_descr . kind , self . span ) . add_to_diagnostic ( & mut diag) ;
961+ ExpectedIdentifierFound :: new ( token_descr, self . span ) . add_to_diagnostic ( & mut diag) ;
959962
960963 if let Some ( sugg) = self . suggest_remove_comma {
961964 sugg. add_to_diagnostic ( & mut diag) ;
@@ -967,7 +970,7 @@ impl<'a, G: EmissionGuarantee> IntoDiagnostic<'a, G> for ExpectedIdentifier {
967970
968971pub ( crate ) struct ExpectedSemi {
969972 pub span : Span ,
970- pub token_descr : TokenDescription ,
973+ pub token : Token ,
971974
972975 pub unexpected_token_label : Option < Span > ,
973976 pub sugg : ExpectedSemiSugg ,
@@ -978,21 +981,23 @@ impl<'a, G: EmissionGuarantee> IntoDiagnostic<'a, G> for ExpectedSemi {
978981 self ,
979982 handler : & ' a rustc_errors:: Handler ,
980983 ) -> rustc_errors:: DiagnosticBuilder < ' a , G > {
981- let mut diag = handler. struct_diagnostic ( match self . token_descr . kind {
982- Some ( TokenDescriptionKind :: ReservedIdentifier ) => {
984+ let token_descr = super :: parser:: TokenDescription :: from_token ( & self . token ) ;
985+
986+ let mut diag = handler. struct_diagnostic ( match token_descr {
987+ Some ( TokenDescription :: ReservedIdentifier ) => {
983988 fluent:: parser:: expected_semi_found_reserved_identifier_str
984989 }
985- Some ( TokenDescriptionKind :: Keyword ) => fluent:: parser:: expected_semi_found_keyword_str,
986- Some ( TokenDescriptionKind :: ReservedKeyword ) => {
990+ Some ( TokenDescription :: Keyword ) => fluent:: parser:: expected_semi_found_keyword_str,
991+ Some ( TokenDescription :: ReservedKeyword ) => {
987992 fluent:: parser:: expected_semi_found_reserved_keyword_str
988993 }
989- Some ( TokenDescriptionKind :: DocComment ) => {
994+ Some ( TokenDescription :: DocComment ) => {
990995 fluent:: parser:: expected_semi_found_doc_comment_str
991996 }
992997 None => fluent:: parser:: expected_semi_found_str,
993998 } ) ;
994999 diag. set_span ( self . span ) ;
995- diag. set_arg ( "token_str " , self . token_descr . name ) ;
1000+ diag. set_arg ( "token " , self . token ) ;
9961001
9971002 if let Some ( unexpected_token_label) = self . unexpected_token_label {
9981003 diag. span_label ( unexpected_token_label, fluent:: parser:: label_unexpected_token) ;
0 commit comments