mirror of
https://github.com/github/codeql.git
synced 2025-12-16 16:53:25 +01:00
Merge branch 'main' into redsun82/codegen-rename-dbscheme
This commit is contained in:
1
rust/ast-generator/.gitignore
vendored
1
rust/ast-generator/.gitignore
vendored
@@ -2,3 +2,4 @@
|
||||
/.idea
|
||||
/src/codegen/grammar.rs
|
||||
/src/codegen/grammar/
|
||||
/rust.ungram
|
||||
|
||||
@@ -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"],
|
||||
)
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"))?;
|
||||
|
||||
Reference in New Issue
Block a user