File tree Expand file tree Collapse file tree 5 files changed +13
-5
lines changed Expand file tree Collapse file tree 5 files changed +13
-5
lines changed Original file line number Diff line number Diff line change @@ -19,6 +19,10 @@ impl Edition {
1919 pub fn at_least_2024 ( self ) -> bool {
2020 self >= Edition :: Edition2024
2121 }
22+
23+ pub fn at_least_2018 ( self ) -> bool {
24+ self >= Edition :: Edition2018
25+ }
2226}
2327
2428#[ derive( Debug ) ]
Original file line number Diff line number Diff line change @@ -178,6 +178,12 @@ impl<'a> Converter<'a> {
178178 rustc_lexer:: TokenKind :: Whitespace => WHITESPACE ,
179179
180180 rustc_lexer:: TokenKind :: Ident if token_text == "_" => UNDERSCORE ,
181+ rustc_lexer:: TokenKind :: Ident
182+ if [ "async" , "await" , "dyn" , "try" ] . contains ( & token_text)
183+ && !self . edition . at_least_2018 ( ) =>
184+ {
185+ IDENT
186+ }
181187 rustc_lexer:: TokenKind :: Ident
182188 if token_text == "gen" && !self . edition . at_least_2024 ( ) =>
183189 {
Original file line number Diff line number Diff line change @@ -99,7 +99,6 @@ pub enum SyntaxKind {
9999 RETURN_KW ,
100100 SELF_KW ,
101101 STATIC_KW ,
102- STRING_KW ,
103102 STRUCT_KW ,
104103 SUPER_KW ,
105104 TRAIT_KW ,
@@ -338,7 +337,6 @@ impl SyntaxKind {
338337 | RETURN_KW
339338 | SELF_KW
340339 | STATIC_KW
341- | STRING_KW
342340 | STRUCT_KW
343341 | SUPER_KW
344342 | TRAIT_KW
@@ -476,7 +474,6 @@ impl SyntaxKind {
476474 "return" => RETURN_KW ,
477475 "self" => SELF_KW ,
478476 "static" => STATIC_KW ,
479- "string" => STRING_KW ,
480477 "struct" => STRUCT_KW ,
481478 "super" => SUPER_KW ,
482479 "trait" => TRAIT_KW ,
@@ -547,4 +544,4 @@ impl SyntaxKind {
547544 }
548545}
549546#[ macro_export]
550- macro_rules ! T { [ $] => { $ crate :: SyntaxKind :: DOLLAR } ; [ ; ] => { $ crate :: SyntaxKind :: SEMICOLON } ; [ , ] => { $ crate :: SyntaxKind :: COMMA } ; [ '(' ] => { $ crate :: SyntaxKind :: L_PAREN } ; [ ')' ] => { $ crate :: SyntaxKind :: R_PAREN } ; [ '{' ] => { $ crate :: SyntaxKind :: L_CURLY } ; [ '}' ] => { $ crate :: SyntaxKind :: R_CURLY } ; [ '[' ] => { $ crate :: SyntaxKind :: L_BRACK } ; [ ']' ] => { $ crate :: SyntaxKind :: R_BRACK } ; [ <] => { $ crate :: SyntaxKind :: L_ANGLE } ; [ >] => { $ crate :: SyntaxKind :: R_ANGLE } ; [ @] => { $ crate :: SyntaxKind :: AT } ; [ #] => { $ crate :: SyntaxKind :: POUND } ; [ ~] => { $ crate :: SyntaxKind :: TILDE } ; [ ?] => { $ crate :: SyntaxKind :: QUESTION } ; [ & ] => { $ crate :: SyntaxKind :: AMP } ; [ |] => { $ crate :: SyntaxKind :: PIPE } ; [ +] => { $ crate :: SyntaxKind :: PLUS } ; [ * ] => { $ crate :: SyntaxKind :: STAR } ; [ /] => { $ crate :: SyntaxKind :: SLASH } ; [ ^] => { $ crate :: SyntaxKind :: CARET } ; [ %] => { $ crate :: SyntaxKind :: PERCENT } ; [ _] => { $ crate :: SyntaxKind :: UNDERSCORE } ; [ . ] => { $ crate :: SyntaxKind :: DOT } ; [ ..] => { $ crate :: SyntaxKind :: DOT2 } ; [ ...] => { $ crate :: SyntaxKind :: DOT3 } ; [ ..=] => { $ crate :: SyntaxKind :: DOT2EQ } ; [ : ] => { $ crate :: SyntaxKind :: COLON } ; [ :: ] => { $ crate :: SyntaxKind :: COLON2 } ; [ =] => { $ crate :: SyntaxKind :: EQ } ; [ ==] => { $ crate :: SyntaxKind :: EQ2 } ; [ =>] => { $ crate :: SyntaxKind :: FAT_ARROW } ; [ !] => { $ crate :: SyntaxKind :: BANG } ; [ !=] => { $ crate :: SyntaxKind :: NEQ } ; [ -] => { $ crate :: SyntaxKind :: MINUS } ; [ ->] => { $ crate :: SyntaxKind :: THIN_ARROW } ; [ <=] => { $ crate :: SyntaxKind :: LTEQ } ; [ >=] => { $ crate :: SyntaxKind :: GTEQ } ; [ +=] => { $ crate :: SyntaxKind :: PLUSEQ } ; [ -=] => { $ crate :: SyntaxKind :: MINUSEQ } ; [ |=] => { $ crate :: SyntaxKind :: PIPEEQ } ; [ &=] => { $ crate :: SyntaxKind :: AMPEQ } ; [ ^=] => { $ crate :: SyntaxKind :: CARETEQ } ; [ /=] => { $ crate :: SyntaxKind :: SLASHEQ } ; [ *=] => { $ crate :: SyntaxKind :: STAREQ } ; [ %=] => { $ crate :: SyntaxKind :: PERCENTEQ } ; [ &&] => { $ crate :: SyntaxKind :: AMP2 } ; [ ||] => { $ crate :: SyntaxKind :: PIPE2 } ; [ <<] => { $ crate :: SyntaxKind :: SHL } ; [ >>] => { $ crate :: SyntaxKind :: SHR } ; [ <<=] => { $ crate :: SyntaxKind :: SHLEQ } ; [ >>=] => { $ crate :: SyntaxKind :: SHREQ } ; [ Self ] => { $ crate :: SyntaxKind :: SELF_TYPE_KW } ; [ abstract] => { $ crate :: SyntaxKind :: ABSTRACT_KW } ; [ as ] => { $ crate :: SyntaxKind :: AS_KW } ; [ async ] => { $ crate :: SyntaxKind :: ASYNC_KW } ; [ await ] => { $ crate :: SyntaxKind :: AWAIT_KW } ; [ become] => { $ crate :: SyntaxKind :: BECOME_KW } ; [ box] => { $ crate :: SyntaxKind :: BOX_KW } ; [ break ] => { $ crate :: SyntaxKind :: BREAK_KW } ; [ const ] => { $ crate :: SyntaxKind :: CONST_KW } ; [ continue ] => { $ crate :: SyntaxKind :: CONTINUE_KW } ; [ crate ] => { $ crate :: SyntaxKind :: CRATE_KW } ; [ do] => { $ crate :: SyntaxKind :: DO_KW } ; [ dyn] => { $ crate :: SyntaxKind :: DYN_KW } ; [ else] => { $ crate :: SyntaxKind :: ELSE_KW } ; [ enum ] => { $ crate :: SyntaxKind :: ENUM_KW } ; [ extern] => { $ crate :: SyntaxKind :: EXTERN_KW } ; [ false ] => { $ crate :: SyntaxKind :: FALSE_KW } ; [ final] => { $ crate :: SyntaxKind :: FINAL_KW } ; [ fn ] => { $ crate :: SyntaxKind :: FN_KW } ; [ for ] => { $ crate :: SyntaxKind :: FOR_KW } ; [ gen ] => { $ crate :: SyntaxKind :: GEN_KW } ; [ if ] => { $ crate :: SyntaxKind :: IF_KW } ; [ impl ] => { $ crate :: SyntaxKind :: IMPL_KW } ; [ in] => { $ crate :: SyntaxKind :: IN_KW } ; [ let ] => { $ crate :: SyntaxKind :: LET_KW } ; [ loop ] => { $ crate :: SyntaxKind :: LOOP_KW } ; [ macro] => { $ crate :: SyntaxKind :: MACRO_KW } ; [ match ] => { $ crate :: SyntaxKind :: MATCH_KW } ; [ mod ] => { $ crate :: SyntaxKind :: MOD_KW } ; [ move] => { $ crate :: SyntaxKind :: MOVE_KW } ; [ mut ] => { $ crate :: SyntaxKind :: MUT_KW } ; [ override] => { $ crate :: SyntaxKind :: OVERRIDE_KW } ; [ priv] => { $ crate :: SyntaxKind :: PRIV_KW } ; [ pub ] => { $ crate :: SyntaxKind :: PUB_KW } ; [ ref] => { $ crate :: SyntaxKind :: REF_KW } ; [ return ] => { $ crate :: SyntaxKind :: RETURN_KW } ; [ self ] => { $ crate :: SyntaxKind :: SELF_KW } ; [ static ] => { $ crate :: SyntaxKind :: STATIC_KW } ; [ string] => { $ crate :: SyntaxKind :: STRING_KW } ; [ struct ] => { $ crate :: SyntaxKind :: STRUCT_KW } ; [ super ] => { $ crate :: SyntaxKind :: SUPER_KW } ; [ trait ] => { $ crate :: SyntaxKind :: TRAIT_KW } ; [ true ] => { $ crate :: SyntaxKind :: TRUE_KW } ; [ try] => { $ crate :: SyntaxKind :: TRY_KW } ; [ type ] => { $ crate :: SyntaxKind :: TYPE_KW } ; [ typeof] => { $ crate :: SyntaxKind :: TYPEOF_KW } ; [ unsafe ] => { $ crate :: SyntaxKind :: UNSAFE_KW } ; [ unsized] => { $ crate :: SyntaxKind :: UNSIZED_KW } ; [ use ] => { $ crate :: SyntaxKind :: USE_KW } ; [ virtual] => { $ crate :: SyntaxKind :: VIRTUAL_KW } ; [ where ] => { $ crate :: SyntaxKind :: WHERE_KW } ; [ while ] => { $ crate :: SyntaxKind :: WHILE_KW } ; [ yield] => { $ crate :: SyntaxKind :: YIELD_KW } ; [ asm] => { $ crate :: SyntaxKind :: ASM_KW } ; [ auto] => { $ crate :: SyntaxKind :: AUTO_KW } ; [ builtin] => { $ crate :: SyntaxKind :: BUILTIN_KW } ; [ default ] => { $ crate :: SyntaxKind :: DEFAULT_KW } ; [ format_args] => { $ crate :: SyntaxKind :: FORMAT_ARGS_KW } ; [ macro_rules] => { $ crate :: SyntaxKind :: MACRO_RULES_KW } ; [ offset_of] => { $ crate :: SyntaxKind :: OFFSET_OF_KW } ; [ raw] => { $ crate :: SyntaxKind :: RAW_KW } ; [ union ] => { $ crate :: SyntaxKind :: UNION_KW } ; [ yeet] => { $ crate :: SyntaxKind :: YEET_KW } ; [ lifetime_ident] => { $ crate :: SyntaxKind :: LIFETIME_IDENT } ; [ int_number] => { $ crate :: SyntaxKind :: INT_NUMBER } ; [ ident] => { $ crate :: SyntaxKind :: IDENT } ; [ shebang] => { $ crate :: SyntaxKind :: SHEBANG } ; }
547+ macro_rules ! T { [ $] => { $ crate :: SyntaxKind :: DOLLAR } ; [ ; ] => { $ crate :: SyntaxKind :: SEMICOLON } ; [ , ] => { $ crate :: SyntaxKind :: COMMA } ; [ '(' ] => { $ crate :: SyntaxKind :: L_PAREN } ; [ ')' ] => { $ crate :: SyntaxKind :: R_PAREN } ; [ '{' ] => { $ crate :: SyntaxKind :: L_CURLY } ; [ '}' ] => { $ crate :: SyntaxKind :: R_CURLY } ; [ '[' ] => { $ crate :: SyntaxKind :: L_BRACK } ; [ ']' ] => { $ crate :: SyntaxKind :: R_BRACK } ; [ <] => { $ crate :: SyntaxKind :: L_ANGLE } ; [ >] => { $ crate :: SyntaxKind :: R_ANGLE } ; [ @] => { $ crate :: SyntaxKind :: AT } ; [ #] => { $ crate :: SyntaxKind :: POUND } ; [ ~] => { $ crate :: SyntaxKind :: TILDE } ; [ ?] => { $ crate :: SyntaxKind :: QUESTION } ; [ & ] => { $ crate :: SyntaxKind :: AMP } ; [ |] => { $ crate :: SyntaxKind :: PIPE } ; [ +] => { $ crate :: SyntaxKind :: PLUS } ; [ * ] => { $ crate :: SyntaxKind :: STAR } ; [ /] => { $ crate :: SyntaxKind :: SLASH } ; [ ^] => { $ crate :: SyntaxKind :: CARET } ; [ %] => { $ crate :: SyntaxKind :: PERCENT } ; [ _] => { $ crate :: SyntaxKind :: UNDERSCORE } ; [ . ] => { $ crate :: SyntaxKind :: DOT } ; [ ..] => { $ crate :: SyntaxKind :: DOT2 } ; [ ...] => { $ crate :: SyntaxKind :: DOT3 } ; [ ..=] => { $ crate :: SyntaxKind :: DOT2EQ } ; [ : ] => { $ crate :: SyntaxKind :: COLON } ; [ :: ] => { $ crate :: SyntaxKind :: COLON2 } ; [ =] => { $ crate :: SyntaxKind :: EQ } ; [ ==] => { $ crate :: SyntaxKind :: EQ2 } ; [ =>] => { $ crate :: SyntaxKind :: FAT_ARROW } ; [ !] => { $ crate :: SyntaxKind :: BANG } ; [ !=] => { $ crate :: SyntaxKind :: NEQ } ; [ -] => { $ crate :: SyntaxKind :: MINUS } ; [ ->] => { $ crate :: SyntaxKind :: THIN_ARROW } ; [ <=] => { $ crate :: SyntaxKind :: LTEQ } ; [ >=] => { $ crate :: SyntaxKind :: GTEQ } ; [ +=] => { $ crate :: SyntaxKind :: PLUSEQ } ; [ -=] => { $ crate :: SyntaxKind :: MINUSEQ } ; [ |=] => { $ crate :: SyntaxKind :: PIPEEQ } ; [ &=] => { $ crate :: SyntaxKind :: AMPEQ } ; [ ^=] => { $ crate :: SyntaxKind :: CARETEQ } ; [ /=] => { $ crate :: SyntaxKind :: SLASHEQ } ; [ *=] => { $ crate :: SyntaxKind :: STAREQ } ; [ %=] => { $ crate :: SyntaxKind :: PERCENTEQ } ; [ &&] => { $ crate :: SyntaxKind :: AMP2 } ; [ ||] => { $ crate :: SyntaxKind :: PIPE2 } ; [ <<] => { $ crate :: SyntaxKind :: SHL } ; [ >>] => { $ crate :: SyntaxKind :: SHR } ; [ <<=] => { $ crate :: SyntaxKind :: SHLEQ } ; [ >>=] => { $ crate :: SyntaxKind :: SHREQ } ; [ Self ] => { $ crate :: SyntaxKind :: SELF_TYPE_KW } ; [ abstract] => { $ crate :: SyntaxKind :: ABSTRACT_KW } ; [ as ] => { $ crate :: SyntaxKind :: AS_KW } ; [ async ] => { $ crate :: SyntaxKind :: ASYNC_KW } ; [ await ] => { $ crate :: SyntaxKind :: AWAIT_KW } ; [ become] => { $ crate :: SyntaxKind :: BECOME_KW } ; [ box] => { $ crate :: SyntaxKind :: BOX_KW } ; [ break ] => { $ crate :: SyntaxKind :: BREAK_KW } ; [ const ] => { $ crate :: SyntaxKind :: CONST_KW } ; [ continue ] => { $ crate :: SyntaxKind :: CONTINUE_KW } ; [ crate ] => { $ crate :: SyntaxKind :: CRATE_KW } ; [ do] => { $ crate :: SyntaxKind :: DO_KW } ; [ dyn] => { $ crate :: SyntaxKind :: DYN_KW } ; [ else] => { $ crate :: SyntaxKind :: ELSE_KW } ; [ enum ] => { $ crate :: SyntaxKind :: ENUM_KW } ; [ extern] => { $ crate :: SyntaxKind :: EXTERN_KW } ; [ false ] => { $ crate :: SyntaxKind :: FALSE_KW } ; [ final] => { $ crate :: SyntaxKind :: FINAL_KW } ; [ fn ] => { $ crate :: SyntaxKind :: FN_KW } ; [ for ] => { $ crate :: SyntaxKind :: FOR_KW } ; [ gen ] => { $ crate :: SyntaxKind :: GEN_KW } ; [ if ] => { $ crate :: SyntaxKind :: IF_KW } ; [ impl ] => { $ crate :: SyntaxKind :: IMPL_KW } ; [ in] => { $ crate :: SyntaxKind :: IN_KW } ; [ let ] => { $ crate :: SyntaxKind :: LET_KW } ; [ loop ] => { $ crate :: SyntaxKind :: LOOP_KW } ; [ macro] => { $ crate :: SyntaxKind :: MACRO_KW } ; [ match ] => { $ crate :: SyntaxKind :: MATCH_KW } ; [ mod ] => { $ crate :: SyntaxKind :: MOD_KW } ; [ move] => { $ crate :: SyntaxKind :: MOVE_KW } ; [ mut ] => { $ crate :: SyntaxKind :: MUT_KW } ; [ override] => { $ crate :: SyntaxKind :: OVERRIDE_KW } ; [ priv] => { $ crate :: SyntaxKind :: PRIV_KW } ; [ pub ] => { $ crate :: SyntaxKind :: PUB_KW } ; [ ref] => { $ crate :: SyntaxKind :: REF_KW } ; [ return ] => { $ crate :: SyntaxKind :: RETURN_KW } ; [ self ] => { $ crate :: SyntaxKind :: SELF_KW } ; [ static ] => { $ crate :: SyntaxKind :: STATIC_KW } ; [ struct ] => { $ crate :: SyntaxKind :: STRUCT_KW } ; [ super ] => { $ crate :: SyntaxKind :: SUPER_KW } ; [ trait ] => { $ crate :: SyntaxKind :: TRAIT_KW } ; [ true ] => { $ crate :: SyntaxKind :: TRUE_KW } ; [ try] => { $ crate :: SyntaxKind :: TRY_KW } ; [ type ] => { $ crate :: SyntaxKind :: TYPE_KW } ; [ typeof] => { $ crate :: SyntaxKind :: TYPEOF_KW } ; [ unsafe ] => { $ crate :: SyntaxKind :: UNSAFE_KW } ; [ unsized] => { $ crate :: SyntaxKind :: UNSIZED_KW } ; [ use ] => { $ crate :: SyntaxKind :: USE_KW } ; [ virtual] => { $ crate :: SyntaxKind :: VIRTUAL_KW } ; [ where ] => { $ crate :: SyntaxKind :: WHERE_KW } ; [ while ] => { $ crate :: SyntaxKind :: WHILE_KW } ; [ yield] => { $ crate :: SyntaxKind :: YIELD_KW } ; [ asm] => { $ crate :: SyntaxKind :: ASM_KW } ; [ auto] => { $ crate :: SyntaxKind :: AUTO_KW } ; [ builtin] => { $ crate :: SyntaxKind :: BUILTIN_KW } ; [ default ] => { $ crate :: SyntaxKind :: DEFAULT_KW } ; [ format_args] => { $ crate :: SyntaxKind :: FORMAT_ARGS_KW } ; [ macro_rules] => { $ crate :: SyntaxKind :: MACRO_RULES_KW } ; [ offset_of] => { $ crate :: SyntaxKind :: OFFSET_OF_KW } ; [ raw] => { $ crate :: SyntaxKind :: RAW_KW } ; [ union ] => { $ crate :: SyntaxKind :: UNION_KW } ; [ yeet] => { $ crate :: SyntaxKind :: YEET_KW } ; [ lifetime_ident] => { $ crate :: SyntaxKind :: LIFETIME_IDENT } ; [ int_number] => { $ crate :: SyntaxKind :: INT_NUMBER } ; [ ident] => { $ crate :: SyntaxKind :: IDENT } ; [ string] => { $ crate :: SyntaxKind :: STRING } ; [ shebang] => { $ crate :: SyntaxKind :: SHEBANG } ; }
Original file line number Diff line number Diff line change 193193 (body:BlockExpr | ';')
194194
195195Abi =
196- 'extern' 'string'?
196+ 'extern' '@ string'?
197197
198198ParamList =
199199 '('(
Original file line number Diff line number Diff line change @@ -484,6 +484,7 @@ fn generate_syntax_kinds(grammar: KindsSrc) -> String {
484484 [ lifetime_ident] => { $crate :: SyntaxKind :: LIFETIME_IDENT } ;
485485 [ int_number] => { $crate :: SyntaxKind :: INT_NUMBER } ;
486486 [ ident] => { $crate :: SyntaxKind :: IDENT } ;
487+ [ string] => { $crate :: SyntaxKind :: STRING } ;
487488 [ shebang] => { $crate :: SyntaxKind :: SHEBANG } ;
488489 }
489490 } ;
You can’t perform that action at this time.
0 commit comments