summaryrefslogtreecommitdiff
path: root/src/main/java/org
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/RustWriter.java9
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustTraitObjectType.java24
2 files changed, 24 insertions, 9 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/RustWriter.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/RustWriter.java
index fe12f9f..6d92c5c 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/RustWriter.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/RustWriter.java
@@ -814,7 +814,14 @@ public class RustWriter implements AutoCloseable {
private void writeTraitObjectType(RustTraitObjectType traitObjectType) throws IOException {
this.writer.write("dyn ");
- this.writeType(traitObjectType.bound());
+
+ writeWithSeparator(
+ traitObjectType.bounds(),
+ this::writeType,
+ () -> {
+ this.writer.write(" + ");
+ }
+ );
}
private void writeTupleType(RustTupleType tupleType) throws IOException {
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustTraitObjectType.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustTraitObjectType.java
index 406a8bd..ef4506c 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustTraitObjectType.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustTraitObjectType.java
@@ -5,22 +5,30 @@ package org.zwobble.hobgoblin.compiler.output.lang.rust.ast;
// Custom area start: org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTraitObjectType imports
// Custom area end: org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTraitObjectType imports
-public record RustTraitObjectType(org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustPath bound) implements org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustType {
+public record RustTraitObjectType(java.util.List<org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustPath> bounds) implements org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustType {
public static org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTraitObjectType.Builder arbitrary() {
- return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTraitObjectType.Builder(org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustPath.arbitrary().build());
+ return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTraitObjectType.Builder(java.util.List.of());
}
- public record Builder(org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustPath bound) implements org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustType.Builder {
+ public record Builder(java.util.List<org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustPath> bounds) implements org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustType.Builder {
public org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTraitObjectType build() {
- return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTraitObjectType(bound);
+ return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTraitObjectType(bounds);
}
- public org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTraitObjectType.Builder withBound(org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustPath bound) {
- return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTraitObjectType.Builder(bound);
+ public org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTraitObjectType.Builder withBounds(java.util.List<org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustPath> bounds) {
+ return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTraitObjectType.Builder(bounds);
}
- public org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTraitObjectType.Builder withBound(org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustPath.Builder bound) {
- return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTraitObjectType.Builder(bound.build());
+ public org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTraitObjectType.Builder addBound(org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustPath bound) {
+ var bounds = new java.util.ArrayList<org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustPath>(this.bounds);
+ bounds.add(bound);
+ return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTraitObjectType.Builder(bounds);
+ }
+
+ public org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTraitObjectType.Builder addBound(org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustPath.Builder bound) {
+ var bounds = new java.util.ArrayList<org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustPath>(this.bounds);
+ bounds.add(bound.build());
+ return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTraitObjectType.Builder(bounds);
}
// Custom area start: org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTraitObjectType.Builder body