Skip to content

Commit 3d3f4ab

Browse files
committed
Simplify parameter IR nodes to use a single type for functions, errors and events
1 parent f424c82 commit 3d3f4ab

7 files changed

Lines changed: 141 additions & 236 deletions

File tree

crates/codegen/generator/src/ir/builders/ir2_flat_contracts.rs

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ pub(super) fn build_from(structured_ast_model: &IrModel) -> ModelWithTransformer
1212
simplify_string_literals(&mut mutator);
1313
simplify_imports(&mut mutator);
1414
simplify_variable_declarations(&mut mutator);
15+
simplify_parameters(&mut mutator);
1516

1617
mutator.into()
1718
}
@@ -207,8 +208,6 @@ fn collapse_redundant_node_types(mutator: &mut IrModelMutator) {
207208
mutator.collapse_sequence("ReturnsDeclaration");
208209
mutator.collapse_sequence("YulParametersDeclaration");
209210
mutator.collapse_sequence("YulReturnsDeclaration");
210-
mutator.collapse_sequence("EventParametersDeclaration");
211-
mutator.collapse_sequence("ErrorParametersDeclaration");
212211
mutator.collapse_sequence("ImportAlias");
213212
mutator.collapse_sequence("ElseBranch");
214213
mutator.collapse_sequence("UsingAlias");
@@ -313,3 +312,19 @@ fn simplify_variable_declarations(mutator: &mut IrModelMutator) {
313312
// `TupleDeconstructionStatement` anymore
314313
mutator.remove_sequence_field("TupleDeconstructionStatement", "var_keyword");
315314
}
315+
316+
fn simplify_parameters(mutator: &mut IrModelMutator) {
317+
// Replace `EventParameter` and `ErrorParameter` with `Parameter`. This
318+
// requires adding an `indexed` attribute (required for event parameters).
319+
mutator.add_sequence_field("Parameter", "indexed", "IndexedKeyword", true);
320+
321+
mutator.remove_type("EventParametersDeclaration");
322+
mutator.remove_type("EventParameters");
323+
mutator.remove_type("EventParameter");
324+
mutator.add_sequence_field("EventDefinition", "parameters", "Parameters", false);
325+
326+
mutator.remove_type("ErrorParametersDeclaration");
327+
mutator.remove_type("ErrorParameters");
328+
mutator.remove_type("ErrorParameter");
329+
mutator.add_sequence_field("ErrorDefinition", "parameters", "Parameters", false);
330+
}

crates/solidity/outputs/cargo/crate/src/backend/ir/ir2_flat_contracts/nodes.generated.rs

Lines changed: 3 additions & 25 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/solidity/outputs/cargo/crate/src/backend/ir/ir2_flat_contracts/transformer.generated.rs

Lines changed: 3 additions & 101 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/solidity/outputs/cargo/crate/src/backend/ir/ir2_flat_contracts/visitor.generated.rs

Lines changed: 2 additions & 60 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)