aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/org
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-11-05 20:29:44 +0000
committerMichael Williamson <mike@zwobble.org>2023-11-05 20:29:44 +0000
commitf98ea69c9d401217af2a6a5d7ab42dae0ae65b6d (patch)
tree87fe99ad2a2e5f06b0c7b40c6bafaf5adb806a45 /src/test/java/org
parentdee7b5195105812c776f5c3fd1814ad25ce4e358 (diff)
Introduce FieldInfo
Diffstat (limited to 'src/test/java/org')
-rw-r--r--src/test/java/org/shedlang/compiler/patio/PatioCodeGenFieldLoadTests.java16
-rw-r--r--src/test/java/org/shedlang/compiler/patio/PatioCodeGenNamespaceFieldStoreTests.java16
-rw-r--r--src/test/java/org/shedlang/compiler/typechecker/TypeCheckerEffectDefinitionTests.java10
-rw-r--r--src/test/java/org/shedlang/compiler/typechecker/TypeCheckerFieldAccessTests.java6
-rw-r--r--src/test/java/org/shedlang/compiler/typechecker/TypeCheckerStructDefinitionTests.java5
-rw-r--r--src/test/java/org/shedlang/compiler/types/FieldsInfoTests.java27
6 files changed, 40 insertions, 40 deletions
diff --git a/src/test/java/org/shedlang/compiler/patio/PatioCodeGenFieldLoadTests.java b/src/test/java/org/shedlang/compiler/patio/PatioCodeGenFieldLoadTests.java
index 21349a0a..ac03f724 100644
--- a/src/test/java/org/shedlang/compiler/patio/PatioCodeGenFieldLoadTests.java
+++ b/src/test/java/org/shedlang/compiler/patio/PatioCodeGenFieldLoadTests.java
@@ -9,13 +9,12 @@ import org.shedlang.compiler.testing.snapshots.Snapshotter;
import org.shedlang.compiler.typechecker.TypeCheckerContext;
import org.shedlang.compiler.typechecker.TypeInfos;
import org.shedlang.compiler.types.NamespaceName;
+import org.shedlang.compiler.types.NamespaceTypeInfo;
import org.shedlang.compiler.types.StructTypeInfo;
import org.shedlang.compiler.types.Types;
-import org.shedlang.compiler.util.P;
import java.io.IOException;
import java.util.List;
-import java.util.Map;
import static org.shedlang.compiler.patio.PatioTesting.serialize;
@@ -26,11 +25,14 @@ public class PatioCodeGenFieldLoadTests {
var namespaceName = new NamespaceName(List.of("Example", "Project"));
var stackIrInstruction = Instructions.fieldLoad(namespaceName, "y");
var typeInfos = TypeCheckerContext.EMPTY
- .addNamespaceFields(namespaceName, P.orderedMap(
- Map.entry("x", Types.INT),
- Map.entry("y", Types.INT),
- Map.entry("z", Types.INT)
- ))
+ .addNamespaceTypeInfo(
+ namespaceName,
+ NamespaceTypeInfo.builder()
+ .addField("x", Types.INT)
+ .addField("y", Types.INT)
+ .addField("z", Types.INT)
+ .build()
+ )
.toTypeInfos();
var context = PatioCodeGenContext.forTypeInfos(typeInfos)
.temporaryPush(new PatioLocalRef("a"))
diff --git a/src/test/java/org/shedlang/compiler/patio/PatioCodeGenNamespaceFieldStoreTests.java b/src/test/java/org/shedlang/compiler/patio/PatioCodeGenNamespaceFieldStoreTests.java
index 1e2a66a9..c905d0ce 100644
--- a/src/test/java/org/shedlang/compiler/patio/PatioCodeGenNamespaceFieldStoreTests.java
+++ b/src/test/java/org/shedlang/compiler/patio/PatioCodeGenNamespaceFieldStoreTests.java
@@ -8,12 +8,11 @@ import org.shedlang.compiler.testing.snapshots.SnapshotResolver;
import org.shedlang.compiler.testing.snapshots.Snapshotter;
import org.shedlang.compiler.typechecker.TypeCheckerContext;
import org.shedlang.compiler.types.NamespaceName;
+import org.shedlang.compiler.types.NamespaceTypeInfo;
import org.shedlang.compiler.types.Types;
-import org.shedlang.compiler.util.P;
import java.io.IOException;
import java.util.List;
-import java.util.Map;
import static org.shedlang.compiler.patio.PatioTesting.serialize;
@@ -24,11 +23,14 @@ public class PatioCodeGenNamespaceFieldStoreTests {
var namespaceName = new NamespaceName(List.of("Example", "Project"));
var stackIrInstruction = Instructions.namespaceFieldStore(namespaceName, "y");
var typeInfo = TypeCheckerContext.EMPTY
- .addNamespaceFields(namespaceName, P.orderedMap(
- Map.entry("x", Types.INT),
- Map.entry("y", Types.INT),
- Map.entry("z", Types.INT)
- ))
+ .addNamespaceTypeInfo(
+ namespaceName,
+ NamespaceTypeInfo.builder()
+ .addField("x", Types.INT)
+ .addField("y", Types.INT)
+ .addField("z", Types.INT)
+ .build()
+ )
.toTypeInfos();
var context = PatioCodeGenContext.forTypeInfos(typeInfo)
.temporaryPush(new PatioLocalRef("a"))
diff --git a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerEffectDefinitionTests.java b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerEffectDefinitionTests.java
index d5603730..3c733e5a 100644
--- a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerEffectDefinitionTests.java
+++ b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerEffectDefinitionTests.java
@@ -6,10 +6,7 @@ import org.shedlang.compiler.ast.untyped.UntypedEffectDefinitionNode;
import org.shedlang.compiler.ast.untyped.UntypedFunctionTypeNode;
import org.shedlang.compiler.sources.Sources;
import org.shedlang.compiler.typechecker.errors.CannotDefineEffectOutsideOfNamespaceError;
-import org.shedlang.compiler.types.Effects;
-import org.shedlang.compiler.types.FunctionType;
-import org.shedlang.compiler.types.NamespaceName;
-import org.shedlang.compiler.types.Types;
+import org.shedlang.compiler.types.*;
import org.shedlang.compiler.util.P;
import java.util.Map;
@@ -19,7 +16,6 @@ import static org.shedlang.compiler.ast.typed.TypedNodeMatchers.isTypedEffectDef
import static org.shedlang.compiler.typechecker.TypeCheckerTesting.typeCheckNamespaceStatement;
import static org.zwobble.precisely.AssertThat.assertThat;
import static org.zwobble.precisely.Matchers.*;
-import static org.zwobble.precisely.Matchers.isSequence;
public class TypeCheckerEffectDefinitionTests {
private static final NamespaceName NAMESPACE_NAME = NamespaceName.of("Example");
@@ -82,8 +78,8 @@ public class TypeCheckerEffectDefinitionTests {
assertThat(
typed.context().userDefinedEffectInfo(Effects.userDefined(NAMESPACE_NAME, "ExampleEffect"), Sources.NULL),
has("fields", x -> x.fields().stream().toList(), isSequence(
- equalTo(Map.entry("b", FunctionType.builder().withReturnType(Types.STRING).build())),
- equalTo(Map.entry("a", FunctionType.builder().withReturnType(Types.BOOL).build()))
+ equalTo(new FieldInfo<>("b", FunctionType.builder().withReturnType(Types.STRING).build())),
+ equalTo(new FieldInfo<>("a", FunctionType.builder().withReturnType(Types.BOOL).build()))
))
);
}
diff --git a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerFieldAccessTests.java b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerFieldAccessTests.java
index 8b5c6371..ec4d4bbe 100644
--- a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerFieldAccessTests.java
+++ b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerFieldAccessTests.java
@@ -52,9 +52,11 @@ public class TypeCheckerFieldAccessTests {
var namespaceType = Types.namespace(NamespaceName.of("Example"));
var context = TypeCheckerContext.EMPTY
.enterGlobal(P.map(Map.entry("Example", namespaceType)))
- .addNamespaceFields(
+ .addNamespaceTypeInfo(
namespaceType.namespaceName(),
- P.orderedMap(Map.entry("name", Types.STRING))
+ NamespaceTypeInfo.builder()
+ .addField("name", Types.STRING)
+ .build()
);
var typed = typeCheckExpression(untyped, context);
diff --git a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerStructDefinitionTests.java b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerStructDefinitionTests.java
index 292d9ab9..f23a2cf4 100644
--- a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerStructDefinitionTests.java
+++ b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerStructDefinitionTests.java
@@ -4,6 +4,7 @@ import org.junit.jupiter.api.Test;
import org.shedlang.compiler.ast.untyped.Untyped;
import org.shedlang.compiler.ast.untyped.UntypedStructDefinitionNode;
import org.shedlang.compiler.typechecker.errors.CannotDefineStructOutsideOfNamespaceError;
+import org.shedlang.compiler.types.FieldInfo;
import org.shedlang.compiler.types.NamespaceName;
import org.shedlang.compiler.types.Types;
import org.shedlang.compiler.util.P;
@@ -120,8 +121,8 @@ public class TypeCheckerStructDefinitionTests {
structTypeInfo,
// TODO: builder for OrderedPMap
has("fields", x -> x.fields().stream().toList(), isSequence(
- equalTo(Map.entry("b", Types.BOOL)),
- equalTo(Map.entry("a", Types.INT))
+ equalTo(new FieldInfo<>("b", Types.BOOL)),
+ equalTo(new FieldInfo<>("a", Types.INT))
))
);
}
diff --git a/src/test/java/org/shedlang/compiler/types/FieldsInfoTests.java b/src/test/java/org/shedlang/compiler/types/FieldsInfoTests.java
index d86338fc..48bb46ff 100644
--- a/src/test/java/org/shedlang/compiler/types/FieldsInfoTests.java
+++ b/src/test/java/org/shedlang/compiler/types/FieldsInfoTests.java
@@ -1,9 +1,6 @@
package org.shedlang.compiler.types;
import org.junit.jupiter.api.Test;
-import org.shedlang.compiler.util.P;
-
-import java.util.Map;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.zwobble.precisely.AssertThat.assertThat;
@@ -12,10 +9,10 @@ import static org.zwobble.precisely.Matchers.equalTo;
public class FieldsInfoTests {
@Test
public void fieldCountReturnsNumberOfFields() {
- var namespaceTypeInfo = new FieldsInfo<>(P.orderedMap(
- Map.entry("a", Types.INT),
- Map.entry("b", Types.STRING)
- ));
+ var namespaceTypeInfo = FieldsInfo.of(
+ new FieldInfo<>("a", Types.INT),
+ new FieldInfo<>("b", Types.STRING)
+ );
var result = namespaceTypeInfo.fieldCount();
@@ -24,10 +21,10 @@ public class FieldsInfoTests {
@Test
public void fieldIndexReturnsIndexOfFieldInMap() {
- var namespaceTypeInfo = new FieldsInfo<>(P.orderedMap(
- Map.entry("a", Types.INT),
- Map.entry("b", Types.STRING)
- ));
+ var namespaceTypeInfo = FieldsInfo.of(
+ new FieldInfo<>("a", Types.INT),
+ new FieldInfo<>("b", Types.STRING)
+ );
var result = namespaceTypeInfo.fieldIndex("b");
@@ -36,10 +33,10 @@ public class FieldsInfoTests {
@Test
public void whenFieldDoesNotExistThenFieldIndexThrowsError() {
- var namespaceTypeInfo = new FieldsInfo<>(P.orderedMap(
- Map.entry("a", Types.INT),
- Map.entry("b", Types.STRING)
- ));
+ var namespaceTypeInfo = FieldsInfo.of(
+ new FieldInfo<>("a", Types.INT),
+ new FieldInfo<>("b", Types.STRING)
+ );
var error = assertThrows(
NoSuchFieldInternalError.class,