summaryrefslogtreecommitdiff
path: root/src/test/java/org/zwobble
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-08-09 16:56:52 +0100
committerMichael Williamson <mike@zwobble.org>2026-08-09 16:56:52 +0100
commit942ca80a1f6d1cded5cb112dd347f8301567fe3f (patch)
tree401f109cadb436a27fd614b71000a46564a504fa /src/test/java/org/zwobble
parent9105526554dc825095c02fdafb1fb7d1852aa134 (diff)
Add bounds to type params in Rust AST
Diffstat (limited to 'src/test/java/org/zwobble')
-rw-r--r--src/test/java/org/zwobble/hobgoblin/compiler/output/lang/rust/RustWriterTests.java17
-rw-r--r--src/test/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustTypeParamMatcher.java6
2 files changed, 23 insertions, 0 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 5b1fe95..31b2c6c 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
@@ -135,6 +135,23 @@ public class RustWriterTests {
assertThat(string, equalTo("type X<T1, T2> = Y;"));
}
+ @Test
+ public void typeAliasWithBoundedTypeParam() throws IOException {
+ var rust = RustTypeAlias.arbitrary()
+ .withName(RustIdentifier.of("X"))
+ .addParam(RustTypeParam.arbitrary()
+ .withName(RustIdentifier.of("T1"))
+ .addBound(RustPath.of("B1"))
+ .addBound(RustPath.of("B2"))
+ )
+ .withType(RustPath.of("Y"))
+ .build();
+
+ var string = write(writer -> writer.writeItem(rust));
+
+ assertThat(string, equalTo("type X<T1: B1 + B2> = Y;"));
+ }
+
// === Structs ===
@Test
diff --git a/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustTypeParamMatcher.java b/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustTypeParamMatcher.java
index 99e09bc..dc6eddc 100644
--- a/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustTypeParamMatcher.java
+++ b/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustTypeParamMatcher.java
@@ -36,6 +36,12 @@ public final class RustTypeParamMatcher implements org.zwobble.precisely.Matcher
return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeParamMatcher(submatchers);
}
+ public org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeParamMatcher 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.RustTypeParam>>(this.submatchers);
+ submatchers.add(org.zwobble.precisely.Matchers.has("bounds", org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeParam::bounds, bounds));
+ return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeParamMatcher(submatchers);
+ }
+
// Custom area start: org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeParamMatcher body
// Custom area end: org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeParamMatcher body
}