Merge branch 'main' into redsun82/codegen-rename-dbscheme

This commit is contained in:
Paolo Tranquilli
2025-03-28 15:06:08 +01:00
202 changed files with 7716 additions and 5409 deletions

View File

@@ -2,3 +2,4 @@
/.idea
/src/codegen/grammar.rs
/src/codegen/grammar/
/rust.ungram

View File

@@ -11,7 +11,7 @@ load("//misc/bazel/3rdparty/tree_sitter_extractors_deps:defs.bzl", "aliases", "a
ra_ap_syntax_workspace, _, _ = str(ra_ap_syntax_label).partition("//")
alias(
name = "ungram",
name = "rust.ungram",
actual = "%s//:rust.ungram" % ra_ap_syntax_workspace,
visibility = ["//rust/codegen:__pkg__"],
)
@@ -45,9 +45,9 @@ codeql_rust_binary(
exclude = ["src/codegen/**"],
) + [":codegen"],
aliases = aliases(),
args = ["$(rlocationpath :ungram)"],
args = ["$(rlocationpath :rust.ungram)"],
compile_data = glob(["src/templates/*.mustache"]),
data = [":ungram"],
data = [":rust.ungram"],
proc_macro_deps = all_crate_deps(
proc_macro = True,
),
@@ -69,7 +69,10 @@ write_file(
# using cat instead of cp to honor default umask
# (also, macOS does not support `cp --no-preserve=mode`)
'cat "$(rlocation "$%s")" > "$DST_DIR/%s"' % item
for item in enumerate(_codegen_outs, 2)
for item in enumerate(
["rust.ungram"] + _codegen_outs,
2,
)
],
is_executable = True,
)
@@ -77,8 +80,14 @@ write_file(
sh_binary(
name = "inject-sources",
srcs = [":update"],
args = ["$(rlocationpath Cargo.toml)"] + ["$(rlocationpath %s)" % f for f in _codegen_outs],
data = ["Cargo.toml"] + _codegen_outs,
args = ["$(rlocationpath %s)" % f for f in [
"Cargo.toml",
":rust.ungram",
] + _codegen_outs],
data = [
"Cargo.toml",
":rust.ungram",
] + _codegen_outs,
deps = ["//misc/bazel:sh_runfiles"],
)

View File

@@ -7,11 +7,11 @@ license = "MIT"
# When updating these dependencies, run `rust/update_cargo_deps.sh`
[dependencies]
ungrammar = "1.16.1"
proc-macro2 = "1.0.93"
quote = "1.0.38"
either = "1.14.0"
stdx = {package = "ra_ap_stdx", version = "0.0.266"}
proc-macro2 = "1.0.94"
quote = "1.0.40"
either = "1.15.0"
stdx = {package = "ra_ap_stdx", version = "0.0.270"}
itertools = "0.14.0"
mustache = "0.9.0"
serde = { version = "1.0.218", features = ["derive"] }
anyhow = "1.0.96"
serde = { version = "1.0.219", features = ["derive"] }
anyhow = "1.0.97"

View File

@@ -464,8 +464,12 @@ struct ExtractorInfo {
nodes: Vec<ExtractorNodeInfo>,
}
fn enum_to_extractor_info(node: &AstEnumSrc) -> ExtractorEnumInfo {
ExtractorEnumInfo {
fn enum_to_extractor_info(node: &AstEnumSrc) -> Option<ExtractorEnumInfo> {
if node.name == "VariantDef" {
// currently defined but unused
return None;
}
Some(ExtractorEnumInfo {
name: class_name(&node.name),
snake_case_name: to_lower_snake_case(&node.name),
ast_name: node.name.clone(),
@@ -477,7 +481,7 @@ fn enum_to_extractor_info(node: &AstEnumSrc) -> ExtractorEnumInfo {
snake_case_name: to_lower_snake_case(v),
})
.collect(),
}
})
}
fn field_info_to_extractor_info(node: &AstNodeSrc, field: &FieldInfo) -> ExtractorNodeFieldInfo {
@@ -527,7 +531,11 @@ fn node_to_extractor_info(node: &AstNodeSrc) -> ExtractorNodeInfo {
fn write_extractor(grammar: &AstSrc) -> mustache::Result<String> {
let extractor_info = ExtractorInfo {
enums: grammar.enums.iter().map(enum_to_extractor_info).collect(),
enums: grammar
.enums
.iter()
.filter_map(enum_to_extractor_info)
.collect(),
nodes: grammar.nodes.iter().map(node_to_extractor_info).collect(),
};
let template = mustache::compile_str(include_str!("templates/extractor.mustache"))?;