Skip to content

Commit 279e9e2

Browse files
authored
Merge pull request #19137 from github/redsun82/rust-renames
Rust: rename several entities to their more natural names
2 parents 01275aa + 87dc4cd commit 279e9e2

File tree

141 files changed

+628
-703
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

141 files changed

+628
-703
lines changed

.pre-commit-config.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ repos:
7272

7373
- id: rust-codegen
7474
name: Run Rust checked in code generation
75-
files: ^misc/codegen/|^rust/(prefix\.dbscheme|schema/|codegen/|.*/generated/|ql/lib/(rust\.dbscheme$|codeql/rust/elements)|\.generated.list)
75+
files: ^misc/codegen/|^rust/(prefix\.dbscheme|schema/|codegen/|.*/generated/|ql/lib/(rust\.dbscheme$|codeql/rust/elements)|\.generated.list|ast-generator/)
7676
language: system
7777
entry: bazel run //rust/codegen -- --quiet
7878
pass_filenames: false

rust/ast-generator/src/main.rs

+43-31
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,7 @@ fn class_name(type_name: &str) -> String {
2323
"Literal" => "LiteralExpr".to_owned(),
2424
"ArrayExpr" => "ArrayExprInternal".to_owned(),
2525
"AsmOptions" => "AsmOptionsList".to_owned(),
26-
_ if type_name.starts_with("Record") && type_name != "RecordFieldList" => {
27-
type_name.replacen("Record", "Struct", 1)
28-
}
26+
_ if type_name.starts_with("Record") => type_name.replacen("Record", "Struct", 1),
2927
_ if type_name.ends_with("Type") => format!("{}Repr", type_name),
3028
_ => type_name.to_owned(),
3129
}
@@ -36,10 +34,14 @@ fn property_name(type_name: &str, field_name: &str) -> String {
3634
("CallExpr", "expr") => "function",
3735
("LetExpr", "expr") => "scrutinee",
3836
("MatchExpr", "expr") => "scrutinee",
37+
("Variant", "expr") => "discriminant",
38+
("FieldExpr", "expr") => "container",
39+
(_, "name_ref") => "identifier",
3940
(_, "then_branch") => "then",
4041
(_, "else_branch") => "else_",
41-
("ArrayType", "ty") => "element_type_repr",
42+
("ArrayTypeRepr", "ty") => "element_type_repr",
4243
("SelfParam", "is_amp") => "is_ref",
44+
("StructField", "expr") => "default",
4345
("UseTree", "is_star") => "is_glob",
4446
(_, "ty") => "type_repr",
4547
_ if field_name.contains("record") => &field_name.replacen("record", "struct", 1),
@@ -103,25 +105,27 @@ fn node_src_to_schema_class(
103105
node: &AstNodeSrc,
104106
super_types: &BTreeMap<String, BTreeSet<String>>,
105107
) -> SchemaClass {
108+
let name = class_name(&node.name);
109+
let fields = get_fields(node)
110+
.iter()
111+
.map(|f| {
112+
let (ty, child) = match &f.ty {
113+
FieldType::String => ("optional[string]".to_string(), false),
114+
FieldType::Predicate => ("predicate".to_string(), false),
115+
FieldType::Optional(ty) => (format!("optional[\"{}\"]", class_name(ty)), true),
116+
FieldType::List(ty) => (format!("list[\"{}\"]", class_name(ty)), true),
117+
};
118+
SchemaField {
119+
name: property_name(&name, &f.name),
120+
ty,
121+
child,
122+
}
123+
})
124+
.collect();
106125
SchemaClass {
107-
name: class_name(&node.name),
126+
name,
127+
fields,
108128
bases: get_bases(&node.name, super_types),
109-
fields: get_fields(node)
110-
.iter()
111-
.map(|f| {
112-
let (ty, child) = match &f.ty {
113-
FieldType::String => ("optional[string]".to_string(), false),
114-
FieldType::Predicate => ("predicate".to_string(), false),
115-
FieldType::Optional(ty) => (format!("optional[\"{}\"]", class_name(ty)), true),
116-
FieldType::List(ty) => (format!("list[\"{}\"]", class_name(ty)), true),
117-
};
118-
SchemaField {
119-
name: property_name(&node.name, &f.name),
120-
ty,
121-
child,
122-
}
123-
})
124-
.collect(),
125129
}
126130
}
127131

@@ -428,6 +432,7 @@ fn get_fields(node: &AstNodeSrc) -> Vec<FieldInfo> {
428432
struct EnumVariantInfo {
429433
name: String,
430434
snake_case_name: String,
435+
variant_ast_name: String,
431436
}
432437

433438
#[derive(Serialize)]
@@ -476,16 +481,21 @@ fn enum_to_extractor_info(node: &AstEnumSrc) -> Option<ExtractorEnumInfo> {
476481
variants: node
477482
.variants
478483
.iter()
479-
.map(|v| EnumVariantInfo {
480-
name: v.clone(),
481-
snake_case_name: to_lower_snake_case(v),
484+
.map(|v| {
485+
let name = class_name(v);
486+
let snake_case_name = to_lower_snake_case(v);
487+
EnumVariantInfo {
488+
name,
489+
snake_case_name,
490+
variant_ast_name: v.clone(),
491+
}
482492
})
483493
.collect(),
484494
})
485495
}
486496

487-
fn field_info_to_extractor_info(node: &AstNodeSrc, field: &FieldInfo) -> ExtractorNodeFieldInfo {
488-
let name = property_name(&node.name, &field.name);
497+
fn field_info_to_extractor_info(name: &str, field: &FieldInfo) -> ExtractorNodeFieldInfo {
498+
let name = property_name(name, &field.name);
489499
match &field.ty {
490500
FieldType::String => ExtractorNodeFieldInfo {
491501
name,
@@ -517,14 +527,16 @@ fn field_info_to_extractor_info(node: &AstNodeSrc, field: &FieldInfo) -> Extract
517527
fn node_to_extractor_info(node: &AstNodeSrc) -> ExtractorNodeInfo {
518528
let fields = get_fields(node);
519529
let has_attrs = fields.iter().any(|f| f.name == "attrs");
530+
let name = class_name(&node.name);
531+
let fields = fields
532+
.iter()
533+
.map(|f| field_info_to_extractor_info(&name, f))
534+
.collect();
520535
ExtractorNodeInfo {
521-
name: class_name(&node.name),
536+
name,
522537
snake_case_name: to_lower_snake_case(&node.name),
523538
ast_name: node.name.clone(),
524-
fields: fields
525-
.iter()
526-
.map(|f| field_info_to_extractor_info(node, f))
527-
.collect(),
539+
fields,
528540
has_attrs,
529541
}
530542
}

rust/ast-generator/src/templates/extractor.mustache

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ impl Translator<'_> {
2525
pub(crate) fn emit_{{snake_case_name}}(&mut self, node: ast::{{ast_name}}) -> Option<Label<generated::{{name}}>> {
2626
match node {
2727
{{#variants}}
28-
ast::{{ast_name}}::{{name}}(inner) => self.emit_{{snake_case_name}}(inner).map(Into::into),
28+
ast::{{ast_name}}::{{variant_ast_name}}(inner) => self.emit_{{snake_case_name}}(inner).map(Into::into),
2929
{{/variants}}
3030
}
3131
}

rust/extractor/src/crate_graph.rs

+7-7
Original file line numberDiff line numberDiff line change
@@ -476,7 +476,7 @@ fn emit_adt(
476476
name,
477477
field_list,
478478
attrs: vec![],
479-
expr: None,
479+
discriminant: None,
480480
visibility,
481481
})
482482
})
@@ -1000,14 +1000,14 @@ fn make_qualified_path(
10001000
qualifier: Option<trap::Label<generated::Path>>,
10011001
name: String,
10021002
) -> trap::Label<generated::Path> {
1003-
let name_ref = Some(trap.emit(generated::NameRef {
1003+
let identifier = Some(trap.emit(generated::NameRef {
10041004
id: trap::TrapId::Star,
10051005
text: Some(name),
10061006
}));
10071007
let segment = Some(trap.emit(generated::PathSegment {
10081008
id: trap::TrapId::Star,
10091009
generic_arg_list: None,
1010-
name_ref,
1010+
identifier,
10111011
parenthesized_arg_list: None,
10121012
ret_type: None,
10131013
return_type_syntax: None,
@@ -1253,11 +1253,11 @@ fn emit_hir_ty(
12531253

12541254
enum Variant {
12551255
Unit,
1256-
Record(trap::Label<generated::RecordFieldList>),
1256+
Record(trap::Label<generated::StructFieldList>),
12571257
Tuple(trap::Label<generated::TupleFieldList>),
12581258
}
12591259

1260-
impl From<Variant> for Option<trap::Label<generated::RecordFieldList>> {
1260+
impl From<Variant> for Option<trap::Label<generated::StructFieldList>> {
12611261
fn from(val: Variant) -> Self {
12621262
match val {
12631263
Variant::Record(label) => Some(label),
@@ -1305,11 +1305,11 @@ fn emit_variant_data(trap: &mut TrapFile, db: &dyn HirDatabase, variant_id: Vari
13051305
name,
13061306
type_repr,
13071307
visibility,
1308-
expr: None,
1308+
default: None,
13091309
})
13101310
})
13111311
.collect();
1312-
Variant::Record(trap.emit(generated::RecordFieldList {
1312+
Variant::Record(trap.emit(generated::StructFieldList {
13131313
id: trap::TrapId::Star,
13141314
fields,
13151315
}))

rust/extractor/src/generated/.generated.list

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)