diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-07-26 00:32:19 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-07-26 00:32:19 +0100 |
| commit | 6925ba376ee030738d5634574b3f3e353fd19d47 (patch) | |
| tree | a217d2ba8b1786859611f39b61f82e9295cad240 /src/test/java | |
| parent | 27dd47f88f1bfea84752d7bf30ef2f7ef3c8cc8e (diff) | |
Allow multiple bounds for Rust trait object type
Diffstat (limited to 'src/test/java')
2 files changed, 16 insertions, 3 deletions
diff --git a/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/rust/RustWriterTests.java b/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/rust/RustWriterTests.java index 8946855..1b3fdac 100644 --- a/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/rust/RustWriterTests.java +++ b/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/rust/RustWriterTests.java @@ -1078,7 +1078,7 @@ public class RustWriterTests { @Test public void traitObjectTypeWithSingleTraitBound() throws IOException { var rust = RustTraitObjectType.arbitrary() - .withBound(RustPath.of("Any")) + .addBound(RustPath.of("Any")) .build(); var string = write(writer -> writer.writeType(rust)); @@ -1087,6 +1087,19 @@ public class RustWriterTests { } @Test + public void traitObjectTypeWithMultipleTraitBounds() throws IOException { + var rust = RustTraitObjectType.arbitrary() + .addBound(RustPath.of("Any")) + .addBound(RustPath.of("Sync")) + .addBound(RustPath.of("Send")) + .build(); + + var string = write(writer -> writer.writeType(rust)); + + assertThat(string, equalTo("dyn Any + Sync + Send")); + } + + @Test public void tupleTypeSingleton() throws IOException { var rust = RustTupleType.arbitrary() .addElementType(RustPath.of("A")) diff --git a/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustTraitObjectTypeMatcher.java b/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustTraitObjectTypeMatcher.java index 8d79f6d..021f7e0 100644 --- a/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustTraitObjectTypeMatcher.java +++ b/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustTraitObjectTypeMatcher.java @@ -28,9 +28,9 @@ public class RustTraitObjectTypeMatcher implements org.zwobble.precisely.Matcher return org.zwobble.precisely.Matchers.instanceOf(org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTraitObjectType.class, this.submatchers); } - public org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTraitObjectTypeMatcher withBound(org.zwobble.precisely.Matcher<? super org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustPath> bound) { + public org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTraitObjectTypeMatcher withBounds(org.zwobble.precisely.Matcher<? super java.util.List<org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustPath>> bounds) { var submatchers = new java.util.ArrayList<org.zwobble.precisely.Matcher<? super org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTraitObjectType>>(this.submatchers); - submatchers.add(org.zwobble.precisely.Matchers.has("bound", org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTraitObjectType::bound, bound)); + submatchers.add(org.zwobble.precisely.Matchers.has("bounds", org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTraitObjectType::bounds, bounds)); return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTraitObjectTypeMatcher(submatchers); } |
