summaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-08-09 21:31:35 +0100
committerMichael Williamson <mike@zwobble.org>2026-08-09 21:31:35 +0100
commit98962d6c17fd91be269e6c8a766977707422cbb4 (patch)
treedc2e43dd2c0f8a5ff9990afc7579ff176225f17a /src/test/java
parentcc0f7190d1254ec89354cea8b2ed0aaecbb3b391 (diff)
Introduce ConstructedStructType
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/zwobble/hobgoblin/compiler/analysis/ArbitraryValueAnalysisTests.java22
-rw-r--r--src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerNamespaceTests.java8
-rw-r--r--src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerStructDefinitionTests.java10
-rw-r--r--src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerSubtypingTests.java10
-rw-r--r--src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerSumDefinitionTests.java18
5 files changed, 34 insertions, 34 deletions
diff --git a/src/test/java/org/zwobble/hobgoblin/compiler/analysis/ArbitraryValueAnalysisTests.java b/src/test/java/org/zwobble/hobgoblin/compiler/analysis/ArbitraryValueAnalysisTests.java
index b802386..7238a3d 100644
--- a/src/test/java/org/zwobble/hobgoblin/compiler/analysis/ArbitraryValueAnalysisTests.java
+++ b/src/test/java/org/zwobble/hobgoblin/compiler/analysis/ArbitraryValueAnalysisTests.java
@@ -34,7 +34,7 @@ public class ArbitraryValueAnalysisTests {
@Test
public void whenTypeIsInfiniteThenErrorIsThrown() {
var sumType = new SumType(NamespaceName.of(), "X");
- var variantType = new StructType(NamespaceName.of(), "Y");
+ var variantType = new SimpleStructType(NamespaceName.of(), "Y");
var typesInfo = TypesInfoInMemory.empty();
typesInfo.defineSumType(
sumType,
@@ -59,8 +59,8 @@ public class ArbitraryValueAnalysisTests {
@Test
public void firstNonRecursivelyConstructibleVariantIsChosen() {
var sumType = new SumType(NamespaceName.of(), "X");
- var recursiveVariantType = new StructType(NamespaceName.of(), "Y");
- var nonRecursiveVariantType = new StructType(NamespaceName.of(), "Z");
+ var recursiveVariantType = new SimpleStructType(NamespaceName.of(), "Y");
+ var nonRecursiveVariantType = new SimpleStructType(NamespaceName.of(), "Z");
var typesInfo = TypesInfoInMemory.empty();
typesInfo.defineSumType(
sumType,
@@ -86,8 +86,8 @@ public class ArbitraryValueAnalysisTests {
@Test
public void boxIsRecursivelyConstructibleIffInnerTypeIsRecursivelyConstructible() {
var sumType = new SumType(NamespaceName.of(), "X");
- var recursiveVariantType = new StructType(NamespaceName.of(), "Y");
- var nonRecursiveVariantType = new StructType(NamespaceName.of(), "Z");
+ var recursiveVariantType = new SimpleStructType(NamespaceName.of(), "Y");
+ var nonRecursiveVariantType = new SimpleStructType(NamespaceName.of(), "Z");
var typesInfo = TypesInfoInMemory.empty();
typesInfo.defineSumType(
sumType,
@@ -113,8 +113,8 @@ public class ArbitraryValueAnalysisTests {
@Test
public void listIsAlwaysNonRecursivelyConstructible() {
var sumType = new SumType(NamespaceName.of(), "X");
- var recursiveVariantType = new StructType(NamespaceName.of(), "Y");
- var nonRecursiveVariantType = new StructType(NamespaceName.of(), "Z");
+ var recursiveVariantType = new SimpleStructType(NamespaceName.of(), "Y");
+ var nonRecursiveVariantType = new SimpleStructType(NamespaceName.of(), "Z");
var typesInfo = TypesInfoInMemory.empty();
typesInfo.defineSumType(
sumType,
@@ -140,8 +140,8 @@ public class ArbitraryValueAnalysisTests {
@Test
public void optionIsAlwaysNonRecursivelyConstructible() {
var sumType = new SumType(NamespaceName.of(), "X");
- var recursiveVariantType = new StructType(NamespaceName.of(), "Y");
- var nonRecursiveVariantType = new StructType(NamespaceName.of(), "Z");
+ var recursiveVariantType = new SimpleStructType(NamespaceName.of(), "Y");
+ var nonRecursiveVariantType = new SimpleStructType(NamespaceName.of(), "Z");
var typesInfo = TypesInfoInMemory.empty();
typesInfo.defineSumType(
sumType,
@@ -167,8 +167,8 @@ public class ArbitraryValueAnalysisTests {
@Test
public void sharedIsRecursivelyConstructibleIffInnerTypeIsRecursivelyConstructible() {
var sumType = new SumType(NamespaceName.of(), "X");
- var recursiveVariantType = new StructType(NamespaceName.of(), "Y");
- var nonRecursiveVariantType = new StructType(NamespaceName.of(), "Z");
+ var recursiveVariantType = new SimpleStructType(NamespaceName.of(), "Y");
+ var nonRecursiveVariantType = new SimpleStructType(NamespaceName.of(), "Z");
var typesInfo = TypesInfoInMemory.empty();
typesInfo.defineSumType(
sumType,
diff --git a/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerNamespaceTests.java b/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerNamespaceTests.java
index 95ad671..9545bce 100644
--- a/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerNamespaceTests.java
+++ b/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerNamespaceTests.java
@@ -41,14 +41,14 @@ public class TypeCheckerNamespaceTests {
has(
"type",
TypedStructDefinitionNode::type,
- equalTo(new StructType(NamespaceName.of("a", "b"), "X"))
+ equalTo(new SimpleStructType(NamespaceName.of("a", "b"), "X"))
)
)
))
)));
assertThat(
context.namespaceFields(NamespaceName.of("a", "b")).orElseThrow().fieldType("X").orElseThrow(),
- isMetaType(new StructType(NamespaceName.of("a", "b"), "X"))
+ isMetaType(new SimpleStructType(NamespaceName.of("a", "b"), "X"))
);
}
@@ -93,13 +93,13 @@ public class TypeCheckerNamespaceTests {
has(
"type",
TypedStructDefinitionNode::type,
- equalTo(new StructType(NamespaceName.of("a", "b"), "X"))
+ equalTo(new SimpleStructType(NamespaceName.of("a", "b"), "X"))
)
)
))
)));
assertThat(
- context.toTypesInfo().fieldsOf(new StructType(NamespaceName.of("a", "b"), "X")),
+ context.toTypesInfo().fieldsOf(new SimpleStructType(NamespaceName.of("a", "b"), "X")),
isOptionalOf(isSequence(
isField("y", new SimpleNativeType(NamespaceName.of("a", "c"), "Y"))
))
diff --git a/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerStructDefinitionTests.java b/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerStructDefinitionTests.java
index ceb7a9b..905ff32 100644
--- a/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerStructDefinitionTests.java
+++ b/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerStructDefinitionTests.java
@@ -11,7 +11,7 @@ import org.zwobble.hobgoblin.compiler.ast.untyped.UntypedStructDefinitionNode;
import org.zwobble.hobgoblin.compiler.ast.untyped.UntypedStructFieldDefinitionNode;
import org.zwobble.hobgoblin.compiler.types.NamespaceName;
import org.zwobble.hobgoblin.compiler.types.SimpleNativeType;
-import org.zwobble.hobgoblin.compiler.types.StructType;
+import org.zwobble.hobgoblin.compiler.types.SimpleStructType;
import java.util.List;
import java.util.Optional;
@@ -36,7 +36,7 @@ public class TypeCheckerStructDefinitionTests {
has(
"type",
TypedStructDefinitionNode::type,
- equalTo(new StructType(NamespaceName.of("a", "b"), "X"))
+ equalTo(new SimpleStructType(NamespaceName.of("a", "b"), "X"))
)
));
}
@@ -87,7 +87,7 @@ public class TypeCheckerStructDefinitionTests {
));
var typesInfo = globalContext.toTypesInfo();
assertThat(
- typesInfo.fieldsOf(new StructType(namespaceName, "X")),
+ typesInfo.fieldsOf(new SimpleStructType(namespaceName, "X")),
isOptionalOf(isSequence(
isField("a", int32Type),
isField("b", int64Type)
@@ -121,7 +121,7 @@ public class TypeCheckerStructDefinitionTests {
));
var typesInfo = globalContext.toTypesInfo();
assertThat(
- typesInfo.fieldsOf(new StructType(namespaceName, "X")),
+ typesInfo.fieldsOf(new SimpleStructType(namespaceName, "X")),
isOptionalEmpty()
);
}
@@ -168,7 +168,7 @@ public class TypeCheckerStructDefinitionTests {
has("type", TypedStructFieldDefinitionNode::type, has(
"value",
TypedTypeLevelExpressionNode::value,
- equalTo(new StructType(namespaceName, "Y"))
+ equalTo(new SimpleStructType(namespaceName, "Y"))
))
)
))
diff --git a/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerSubtypingTests.java b/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerSubtypingTests.java
index f22bc3e..0790561 100644
--- a/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerSubtypingTests.java
+++ b/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerSubtypingTests.java
@@ -33,8 +33,8 @@ public class TypeCheckerSubtypingTests {
@Test
public void variantIsSubtypeOfSumType() {
- var variantType1 = new StructType(NamespaceName.of(), "Rectangle");
- var variantType2 = new StructType(NamespaceName.of(), "Circle");
+ var variantType1 = new SimpleStructType(NamespaceName.of(), "Rectangle");
+ var variantType2 = new SimpleStructType(NamespaceName.of(), "Circle");
var sumType = new SumType(NamespaceName.of(), "Shape");
var typesInfo = TypesInfoInMemory.empty();
typesInfo.defineSumType(
@@ -56,8 +56,8 @@ public class TypeCheckerSubtypingTests {
public void variantIsNotSubtypeOfUnrelatedSumType() {
var typesInfo = TypesInfoInMemory.empty();
- var variantType1 = new StructType(NamespaceName.of(), "Rectangle");
- var variantType2 = new StructType(NamespaceName.of(), "Circle");
+ var variantType1 = new SimpleStructType(NamespaceName.of(), "Rectangle");
+ var variantType2 = new SimpleStructType(NamespaceName.of(), "Circle");
var sumType = new SumType(NamespaceName.of(), "Shape");
typesInfo.defineSumType(
sumType,
@@ -70,7 +70,7 @@ public class TypeCheckerSubtypingTests {
);
var otherSumType = new SumType(NamespaceName.of(), "Shape3D");
- var otherVariantType = new StructType(NamespaceName.of(), "Cube");
+ var otherVariantType = new SimpleStructType(NamespaceName.of(), "Cube");
typesInfo.defineSumType(
otherSumType,
List.of(new SumVariant(0, otherVariantType, otherVariantType)),
diff --git a/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerSumDefinitionTests.java b/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerSumDefinitionTests.java
index be9790a..693f2fa 100644
--- a/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerSumDefinitionTests.java
+++ b/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerSumDefinitionTests.java
@@ -44,8 +44,8 @@ public class TypeCheckerSumDefinitionTests {
@Test
public void variantsAreTypeChecked() {
- var rectangleType = new StructType(NamespaceName.of("a", "b"), "Rectangle");
- var triangleType = new StructType(NamespaceName.of("a", "b"), "Triangle");
+ var rectangleType = new SimpleStructType(NamespaceName.of("a", "b"), "Rectangle");
+ var triangleType = new SimpleStructType(NamespaceName.of("a", "b"), "Triangle");
var untyped = UntypedSumDefinitionNode.arbitrary()
.withName("X")
.withVariants(List.of(
@@ -95,8 +95,8 @@ public class TypeCheckerSumDefinitionTests {
@Test
public void variantCanHaveBoxType() {
- var rectangleType = new StructType(NamespaceName.of("a", "b"), "Rectangle");
- var triangleType = new StructType(NamespaceName.of("a", "b"), "Triangle");
+ var rectangleType = new SimpleStructType(NamespaceName.of("a", "b"), "Rectangle");
+ var triangleType = new SimpleStructType(NamespaceName.of("a", "b"), "Triangle");
var untyped = UntypedSumDefinitionNode.arbitrary()
.withName("X")
.withVariants(List.of(
@@ -184,7 +184,7 @@ public class TypeCheckerSumDefinitionTests {
.build()
))
.build();
- var variantType = new StructType(NamespaceName.of("other"), "Variant");
+ var variantType = new SimpleStructType(NamespaceName.of("other"), "Variant");
var globalContext = TypeCheckerGlobalContext.initial();
globalContext.addNativeTypeConstructor(NativeTypes.BOX);
var namespaceContext = globalContext
@@ -273,7 +273,7 @@ public class TypeCheckerSumDefinitionTests {
var namespaceName = NamespaceName.of("a", "b");
var namespaceContext = globalContext
.enterNamespace(namespaceName);
- var variantType = new StructType(namespaceName, "Square");
+ var variantType = new SimpleStructType(namespaceName, "Square");
namespaceContext.declare("Square", new TypeLevelValueType(variantType), NullSource.INSTANCE);
namespaceContext.defineStructType(variantType, Optional.of(List.of()));
@@ -310,7 +310,7 @@ public class TypeCheckerSumDefinitionTests {
var namespaceName = NamespaceName.of("a", "b");
var namespaceContext = globalContext
.enterNamespace(namespaceName);
- var variantType = new StructType(namespaceName, "Square");
+ var variantType = new SimpleStructType(namespaceName, "Square");
namespaceContext.declare("Square", new TypeLevelValueType(variantType), NullSource.INSTANCE);
namespaceContext.defineStructType(variantType, Optional.of(List.of(new Field("area", int64Type, NullSource.INSTANCE))));
@@ -346,7 +346,7 @@ public class TypeCheckerSumDefinitionTests {
var namespaceName = NamespaceName.of("a", "b");
var namespaceContext = globalContext
.enterNamespace(namespaceName);
- var variantType = new StructType(namespaceName, "Square");
+ var variantType = new SimpleStructType(namespaceName, "Square");
namespaceContext.declare("Square", new TypeLevelValueType(variantType), NullSource.INSTANCE);
namespaceContext.defineStructType(variantType, Optional.of(List.of()));
@@ -368,7 +368,7 @@ public class TypeCheckerSumDefinitionTests {
var namespaceContext = globalContext
.enterNamespace(namespaceName);
var sumType = new SumType(namespaceName, "Shape");
- var variantType = new StructType(namespaceName, "Square");
+ var variantType = new SimpleStructType(namespaceName, "Square");
namespaceContext.declare("Sum", new TypeLevelValueType(sumType), NullSource.INSTANCE);
namespaceContext.defineSumType(
sumType,