Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'xtask/src/codegen/grammar.rs')
-rw-r--r--xtask/src/codegen/grammar.rs32
1 files changed, 26 insertions, 6 deletions
diff --git a/xtask/src/codegen/grammar.rs b/xtask/src/codegen/grammar.rs
index 0fc97ad654..2d492f79f1 100644
--- a/xtask/src/codegen/grammar.rs
+++ b/xtask/src/codegen/grammar.rs
@@ -27,7 +27,12 @@ use self::ast_src::{AstEnumSrc, AstNodeSrc, AstSrc, Cardinality, Field, KindsSrc
pub(crate) fn generate(check: bool) {
let syntax_kinds = generate_syntax_kinds(KINDS_SRC);
let syntax_kinds_file = project_root().join("crates/parser/src/syntax_kind/generated.rs");
- ensure_file_contents(syntax_kinds_file.as_path(), &syntax_kinds, check);
+ ensure_file_contents(
+ crate::flags::CodegenType::Grammar,
+ syntax_kinds_file.as_path(),
+ &syntax_kinds,
+ check,
+ );
let grammar = fs::read_to_string(project_root().join("crates/syntax/rust.ungram"))
.unwrap()
@@ -37,11 +42,21 @@ pub(crate) fn generate(check: bool) {
let ast_tokens = generate_tokens(&ast);
let ast_tokens_file = project_root().join("crates/syntax/src/ast/generated/tokens.rs");
- ensure_file_contents(ast_tokens_file.as_path(), &ast_tokens, check);
+ ensure_file_contents(
+ crate::flags::CodegenType::Grammar,
+ ast_tokens_file.as_path(),
+ &ast_tokens,
+ check,
+ );
let ast_nodes = generate_nodes(KINDS_SRC, &ast);
let ast_nodes_file = project_root().join("crates/syntax/src/ast/generated/nodes.rs");
- ensure_file_contents(ast_nodes_file.as_path(), &ast_nodes, check);
+ ensure_file_contents(
+ crate::flags::CodegenType::Grammar,
+ ast_nodes_file.as_path(),
+ &ast_nodes,
+ check,
+ );
}
fn generate_tokens(grammar: &AstSrc) -> String {
@@ -69,7 +84,7 @@ fn generate_tokens(grammar: &AstSrc) -> String {
});
add_preamble(
- "sourcegen_ast",
+ crate::flags::CodegenType::Grammar,
reformat(
quote! {
use crate::{SyntaxKind::{self, *}, SyntaxToken, ast::AstToken};
@@ -328,7 +343,7 @@ fn generate_nodes(kinds: KindsSrc<'_>, grammar: &AstSrc) -> String {
}
}
- let res = add_preamble("sourcegen_ast", reformat(res));
+ let res = add_preamble(crate::flags::CodegenType::Grammar, reformat(res));
res.replace("#[derive", "\n#[derive")
}
@@ -458,7 +473,7 @@ fn generate_syntax_kinds(grammar: KindsSrc<'_>) -> String {
}
};
- add_preamble("sourcegen_ast", reformat(ast.to_string()))
+ add_preamble(crate::flags::CodegenType::Grammar, reformat(ast.to_string()))
}
fn to_upper_snake_case(s: &str) -> String {
@@ -875,3 +890,8 @@ impl AstNodeSrc {
});
}
}
+
+#[test]
+fn test() {
+ generate(true);
+}