Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
144 changes: 143 additions & 1 deletion crates/parser/src/syntax_kind/generated.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1006,7 +1006,149 @@ impl SyntaxKind {
}
}
#[macro_export]
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 } ; [global_asm] => { $ crate :: SyntaxKind :: GLOBAL_ASM_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 } ; [naked_asm] => { $ crate :: SyntaxKind :: NAKED_ASM_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 } ; }
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 };
[global_asm] => { $ crate :: SyntaxKind :: GLOBAL_ASM_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 };
[naked_asm] => { $ crate :: SyntaxKind :: NAKED_ASM_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 };
}

impl ::core::marker::Copy for SyntaxKind {}
impl ::core::clone::Clone for SyntaxKind {
#[inline]
Expand Down
18 changes: 17 additions & 1 deletion xtask/src/codegen/grammar.rs
Original file line number Diff line number Diff line change
Expand Up @@ -706,7 +706,23 @@ fn generate_syntax_kinds(grammar: KindsSrc) -> String {
}
};

add_preamble(crate::flags::CodegenType::Grammar, reformat(ast.to_string()))
let result = add_preamble(crate::flags::CodegenType::Grammar, reformat(ast.to_string()));

if let Some(start) = result.find("macro_rules ! T_")
&& let Some(macro_end) = result[start..].find("\nimpl ::core::marker::Copy")
{
let macro_section = &result[start..start + macro_end];
let formatted_macro = macro_section
.replace("T_ { [", "T_ {\n [")
.replace(" ; [", ";\n [")
.replace(" ; }", ";\n}")
.trim_end()
.to_owned()
+ "\n";
return result.replace(macro_section, &formatted_macro);
}

result
}

fn to_upper_snake_case(s: &str) -> String {
Expand Down