File tree Expand file tree Collapse file tree 5 files changed +18
-1
lines changed Expand file tree Collapse file tree 5 files changed +18
-1
lines changed Original file line number Diff line number Diff line change @@ -179,6 +179,15 @@ impl<'a> Converter<'a> {
179
179
COMMENT
180
180
}
181
181
182
+ rustc_lexer:: TokenKind :: Frontmatter { has_invalid_preceding_whitespace, invalid_infostring } => {
183
+ if * has_invalid_preceding_whitespace {
184
+ err = "invalid preceding whitespace for frontmatter opening"
185
+ } else if * invalid_infostring {
186
+ err = "invalid infostring for frontmatter"
187
+ }
188
+ FRONTMATTER
189
+ }
190
+
182
191
rustc_lexer:: TokenKind :: Whitespace => WHITESPACE ,
183
192
184
193
rustc_lexer:: TokenKind :: Ident if token_text == "_" => UNDERSCORE ,
Original file line number Diff line number Diff line change @@ -150,6 +150,7 @@ pub enum SyntaxKind {
150
150
STRING ,
151
151
COMMENT ,
152
152
ERROR ,
153
+ FRONTMATTER ,
153
154
IDENT ,
154
155
LIFETIME_IDENT ,
155
156
NEWLINE ,
@@ -483,6 +484,7 @@ impl SyntaxKind {
483
484
| YIELD_EXPR
484
485
| COMMENT
485
486
| ERROR
487
+ | FRONTMATTER
486
488
| IDENT
487
489
| LIFETIME_IDENT
488
490
| NEWLINE
@@ -994,7 +996,7 @@ impl SyntaxKind {
994
996
}
995
997
}
996
998
#[ macro_export]
997
- 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 } ; [ 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 } ; [ 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 } ; [ 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 } ; [ 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 } ; [ att_syntax] => { $ crate :: SyntaxKind :: ATT_SYNTAX_KW } ; [ auto] => { $ crate :: SyntaxKind :: AUTO_KW } ; [ builtin] => { $ crate :: SyntaxKind :: BUILTIN_KW } ; [ clobber_abi] => { $ crate :: SyntaxKind :: CLOBBER_ABI_KW } ; [ default ] => { $ crate :: SyntaxKind :: DEFAULT_KW } ; [ dyn] => { $ crate :: SyntaxKind :: DYN_KW } ; [ format_args] => { $ crate :: SyntaxKind :: FORMAT_ARGS_KW } ; [ inlateout] => { $ crate :: SyntaxKind :: INLATEOUT_KW } ; [ inout] => { $ crate :: SyntaxKind :: INOUT_KW } ; [ label] => { $ crate :: SyntaxKind :: LABEL_KW } ; [ lateout] => { $ crate :: SyntaxKind :: LATEOUT_KW } ; [ macro_rules] => { $ crate :: SyntaxKind :: MACRO_RULES_KW } ; [ may_unwind] => { $ crate :: SyntaxKind :: MAY_UNWIND_KW } ; [ nomem] => { $ crate :: SyntaxKind :: NOMEM_KW } ; [ noreturn] => { $ crate :: SyntaxKind :: NORETURN_KW } ; [ nostack] => { $ crate :: SyntaxKind :: NOSTACK_KW } ; [ offset_of] => { $ crate :: SyntaxKind :: OFFSET_OF_KW } ; [ options] => { $ crate :: SyntaxKind :: OPTIONS_KW } ; [ out] => { $ crate :: SyntaxKind :: OUT_KW } ; [ preserves_flags] => { $ crate :: SyntaxKind :: PRESERVES_FLAGS_KW } ; [ pure] => { $ crate :: SyntaxKind :: PURE_KW } ; [ raw] => { $ crate :: SyntaxKind :: RAW_KW } ; [ readonly] => { $ crate :: SyntaxKind :: READONLY_KW } ; [ safe] => { $ crate :: SyntaxKind :: SAFE_KW } ; [ sym] => { $ crate :: SyntaxKind :: SYM_KW } ; [ union ] => { $ crate :: SyntaxKind :: UNION_KW } ; [ yeet] => { $ crate :: SyntaxKind :: YEET_KW } ; [ async ] => { $ crate :: SyntaxKind :: ASYNC_KW } ; [ await ] => { $ crate :: SyntaxKind :: AWAIT_KW } ; [ dyn] => { $ crate :: SyntaxKind :: DYN_KW } ; [ gen ] => { $ crate :: SyntaxKind :: GEN_KW } ; [ try] => { $ crate :: SyntaxKind :: TRY_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 } ; }
999
+ 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 } ; [ 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 } ; [ 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 } ; [ 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 } ; [ 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 } ; [ att_syntax] => { $ crate :: SyntaxKind :: ATT_SYNTAX_KW } ; [ auto] => { $ crate :: SyntaxKind :: AUTO_KW } ; [ builtin] => { $ crate :: SyntaxKind :: BUILTIN_KW } ; [ clobber_abi] => { $ crate :: SyntaxKind :: CLOBBER_ABI_KW } ; [ default ] => { $ crate :: SyntaxKind :: DEFAULT_KW } ; [ dyn] => { $ crate :: SyntaxKind :: DYN_KW } ; [ format_args] => { $ crate :: SyntaxKind :: FORMAT_ARGS_KW } ; [ inlateout] => { $ crate :: SyntaxKind :: INLATEOUT_KW } ; [ inout] => { $ crate :: SyntaxKind :: INOUT_KW } ; [ label] => { $ crate :: SyntaxKind :: LABEL_KW } ; [ lateout] => { $ crate :: SyntaxKind :: LATEOUT_KW } ; [ macro_rules] => { $ crate :: SyntaxKind :: MACRO_RULES_KW } ; [ may_unwind] => { $ crate :: SyntaxKind :: MAY_UNWIND_KW } ; [ nomem] => { $ crate :: SyntaxKind :: NOMEM_KW } ; [ noreturn] => { $ crate :: SyntaxKind :: NORETURN_KW } ; [ nostack] => { $ crate :: SyntaxKind :: NOSTACK_KW } ; [ offset_of] => { $ crate :: SyntaxKind :: OFFSET_OF_KW } ; [ options] => { $ crate :: SyntaxKind :: OPTIONS_KW } ; [ out] => { $ crate :: SyntaxKind :: OUT_KW } ; [ preserves_flags] => { $ crate :: SyntaxKind :: PRESERVES_FLAGS_KW } ; [ pure] => { $ crate :: SyntaxKind :: PURE_KW } ; [ raw] => { $ crate :: SyntaxKind :: RAW_KW } ; [ readonly] => { $ crate :: SyntaxKind :: READONLY_KW } ; [ safe] => { $ crate :: SyntaxKind :: SAFE_KW } ; [ sym] => { $ crate :: SyntaxKind :: SYM_KW } ; [ union ] => { $ crate :: SyntaxKind :: UNION_KW } ; [ yeet] => { $ crate :: SyntaxKind :: YEET_KW } ; [ async ] => { $ crate :: SyntaxKind :: ASYNC_KW } ; [ await ] => { $ crate :: SyntaxKind :: AWAIT_KW } ; [ dyn] => { $ crate :: SyntaxKind :: DYN_KW } ; [ gen ] => { $ crate :: SyntaxKind :: GEN_KW } ; [ try] => { $ crate :: SyntaxKind :: TRY_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 } ; [ frontmatter] => { $ crate :: SyntaxKind :: FRONTMATTER } ; }
998
1000
impl :: core:: marker:: Copy for SyntaxKind { }
999
1001
impl :: core:: clone:: Clone for SyntaxKind {
1000
1002
#[ inline]
Original file line number Diff line number Diff line change @@ -133,6 +133,7 @@ Meta =
133
133
134
134
SourceFile =
135
135
'#shebang'?
136
+ '#frontmatter'?
136
137
Attr*
137
138
Item*
138
139
Original file line number Diff line number Diff line change @@ -1524,6 +1524,10 @@ impl ast::HasAttrs for SourceFile {}
1524
1524
impl ast:: HasDocComments for SourceFile { }
1525
1525
impl ast:: HasModuleItem for SourceFile { }
1526
1526
impl SourceFile {
1527
+ #[ inline]
1528
+ pub fn frontmatter_token ( & self ) -> Option < SyntaxToken > {
1529
+ support:: token ( & self . syntax , T ! [ frontmatter] )
1530
+ }
1527
1531
#[ inline]
1528
1532
pub fn shebang_token ( & self ) -> Option < SyntaxToken > { support:: token ( & self . syntax , T ! [ shebang] ) }
1529
1533
}
Original file line number Diff line number Diff line change @@ -670,6 +670,7 @@ fn generate_syntax_kinds(grammar: KindsSrc) -> String {
670
670
[ ident] => { $crate :: SyntaxKind :: IDENT } ;
671
671
[ string] => { $crate :: SyntaxKind :: STRING } ;
672
672
[ shebang] => { $crate :: SyntaxKind :: SHEBANG } ;
673
+ [ frontmatter] => { $crate :: SyntaxKind :: FRONTMATTER } ;
673
674
}
674
675
675
676
impl :: core:: marker:: Copy for SyntaxKind { }
You can’t perform that action at this time.
0 commit comments