diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-07-14 19:49:24 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-07-14 19:49:24 +0100 |
| commit | f189d982951f7f0e2c3560a20c0d1d8a2b6431d0 (patch) | |
| tree | 2c369ef2467f91aaa1a03071998831d0f84e6e7b /src | |
| parent | 0e51a1497b98bd190d304acc4c1e1e1f56bf03c7 (diff) | |
Derive Debug and PartialEq for generated Rust types
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttypes/RustTypesGenerator.java | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttypes/RustTypesGenerator.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttypes/RustTypesGenerator.java index 19f3365..7695bf4 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttypes/RustTypesGenerator.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttypes/RustTypesGenerator.java @@ -92,6 +92,8 @@ public class RustTypesGenerator implements Generator { TypedEnumDefinitionNode enumDefinition, Context context ) { + var rustAttributes = List.of(DERIVE_ATTRIBUTE); + var rustEnumName = this.rustGenerator.generateTypeName(enumDefinition.name()); var rustVariants = enumDefinition.variants().stream() @@ -102,7 +104,7 @@ public class RustTypesGenerator implements Generator { .toList(); var rustEnum = new RustEnum( - List.of(), + rustAttributes, rustEnumName, rustVariants, enumDefinition.docComment() @@ -111,10 +113,17 @@ public class RustTypesGenerator implements Generator { return List.of(rustEnum); } + private static final RustOuterAttribute DERIVE_ATTRIBUTE = new RustOuterAttribute( + RustTypePath.of("derive"), + Optional.of("(Debug, PartialEq)") + ); + private List<RustItem> generateStructDefinition( TypedStructDefinitionNode structDefinition, Context context ) { + var rustAttributes = List.of(DERIVE_ATTRIBUTE); + var rustStructName = this.rustGenerator.generateTypeName(structDefinition.name()); var rustFields = structDefinition.fields().stream() @@ -124,7 +133,12 @@ public class RustTypesGenerator implements Generator { )) .toList(); - var rustStruct = new RustStructStruct(List.of(), rustStructName, rustFields, structDefinition.docComment()); + var rustStruct = new RustStructStruct( + rustAttributes, + rustStructName, + rustFields, + structDefinition.docComment() + ); return List.of(rustStruct); } @@ -133,6 +147,8 @@ public class RustTypesGenerator implements Generator { TypedSumDefinitionNode sumDefinition, Context context ) { + var rustAttributes = List.of(DERIVE_ATTRIBUTE); + var items = new ArrayList<RustItem>(); var rustEnumName = this.rustGenerator.generateTypeName(sumDefinition.name()); @@ -156,7 +172,7 @@ public class RustTypesGenerator implements Generator { .toList(); var rustEnum = new RustEnum( - List.of(), + rustAttributes, rustEnumName, rustVariants, sumDefinition.docComment() |
