diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-09-30 18:05:56 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-09-30 18:05:56 +0100 |
| commit | ce146e1a71652db658234d3d92180ed4f7a76427 (patch) | |
| tree | 671f97e02539834861df75b0fddda4716e537cb1 /src/test/java | |
| parent | 0b88941c9627213f2708abd509d959e6ddc04bec (diff) | |
Add type info for sum types
Diffstat (limited to 'src/test/java')
| -rw-r--r-- | src/test/java/org/shedlang/compiler/typechecker/TypeCheckerSumTypeDefinitionTests.java | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerSumTypeDefinitionTests.java b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerSumTypeDefinitionTests.java index 0a551c95..d70d3660 100644 --- a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerSumTypeDefinitionTests.java +++ b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerSumTypeDefinitionTests.java @@ -15,8 +15,7 @@ import java.util.Map; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.shedlang.compiler.ast.typed.TypedNodeMatchers.isTypedSumTypeDefinitionNode; import static org.zwobble.precisely.AssertThat.assertThat; -import static org.zwobble.precisely.Matchers.equalTo; -import static org.zwobble.precisely.Matchers.isOptionalOf; +import static org.zwobble.precisely.Matchers.*; public class TypeCheckerSumTypeDefinitionTests { private static final NamespaceName NAMESPACE_NAME = NamespaceName.of("Example"); @@ -57,7 +56,7 @@ public class TypeCheckerSumTypeDefinitionTests { var untyped = UntypedSumTypeDefinitionNode.builder() .withName("ExampleSumType") .addVariant(Untyped.typeLevelReference("A")) - .addVariant(Untyped.typeLevelReference("A")) + .addVariant(Untyped.typeLevelReference("B")) .build(); var variantType1 = Types.struct(NAMESPACE_NAME, "A"); var variantType2 = Types.struct(NAMESPACE_NAME, "B"); @@ -72,6 +71,16 @@ public class TypeCheckerSumTypeDefinitionTests { assertThat(typed.value(), isTypedSumTypeDefinitionNode( Types.sum(NAMESPACE_NAME, "ExampleSumType") )); + var sumTypeInfo = typed.context().toTypeInfos() + .sumTypeInfo(Types.sum(NAMESPACE_NAME, "ExampleSumType")) + .orElseThrow(); + assertThat( + sumTypeInfo, + has("variants", x -> x.variants(), isSequence( + equalTo(variantType1), + equalTo(variantType2) + )) + ); } private static TypeCheckerResult<? extends TypedNamespaceStatementNode> typeCheckNamespaceStatement( |
