summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-07-14 19:49:24 +0100
committerMichael Williamson <mike@zwobble.org>2026-07-14 19:49:24 +0100
commitf189d982951f7f0e2c3560a20c0d1d8a2b6431d0 (patch)
tree2c369ef2467f91aaa1a03071998831d0f84e6e7b /src
parent0e51a1497b98bd190d304acc4c1e1e1f56bf03c7 (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.java22
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()