aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-09-30 18:05:56 +0100
committerMichael Williamson <mike@zwobble.org>2023-09-30 18:05:56 +0100
commitce146e1a71652db658234d3d92180ed4f7a76427 (patch)
tree671f97e02539834861df75b0fddda4716e537cb1 /src/test/java
parent0b88941c9627213f2708abd509d959e6ddc04bec (diff)
Add type info for sum types
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/typechecker/TypeCheckerSumTypeDefinitionTests.java15
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(