aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2024-03-02 14:07:54 +0000
committerMichael Williamson <mike@zwobble.org>2024-03-02 14:08:37 +0000
commitdfced83cd4ba6e49c395ea4106fc6f9fd7250de0 (patch)
tree15e02918865223d3bb3e736f18972068758c1570 /src/test/java
parenta7108d4744d972886845690df7f66edb3b5d48ec (diff)
Introduce TypeLevelParam
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/ast/typed/TypedFunctionSignatureNodeMatcher.java4
-rw-r--r--src/test/java/org/shedlang/compiler/ast/untyped/Untyped.java4
-rw-r--r--src/test/java/org/shedlang/compiler/typechecker/TypeCheckerTypeLevelParamTests.java14
-rw-r--r--src/test/java/org/shedlang/compiler/types/TypeMatchers.java2
4 files changed, 21 insertions, 3 deletions
diff --git a/src/test/java/org/shedlang/compiler/ast/typed/TypedFunctionSignatureNodeMatcher.java b/src/test/java/org/shedlang/compiler/ast/typed/TypedFunctionSignatureNodeMatcher.java
index d6038729..3e51962d 100644
--- a/src/test/java/org/shedlang/compiler/ast/typed/TypedFunctionSignatureNodeMatcher.java
+++ b/src/test/java/org/shedlang/compiler/ast/typed/TypedFunctionSignatureNodeMatcher.java
@@ -3,7 +3,7 @@ package org.shedlang.compiler.ast.typed;
import org.pcollections.Empty;
import org.pcollections.PVector;
import org.shedlang.compiler.testing.MatcherBuilder;
-import org.shedlang.compiler.types.TypeParam;
+import org.shedlang.compiler.types.TypeLevelParam;
import org.zwobble.precisely.Matcher;
import java.util.Optional;
@@ -51,7 +51,7 @@ public class TypedFunctionSignatureNodeMatcher extends MatcherBuilder<
}
public TypedFunctionSignatureNodeMatcher withTypeLevelParams(
- Matcher<Optional<? extends Iterable<TypeParam>>> typeLevelParams
+ Matcher<Optional<? extends Iterable<TypeLevelParam>>> typeLevelParams
) {
return with(has("typeLevelParams", x -> x.typeLevelParams(), typeLevelParams));
}
diff --git a/src/test/java/org/shedlang/compiler/ast/untyped/Untyped.java b/src/test/java/org/shedlang/compiler/ast/untyped/Untyped.java
index c7a99fce..2eacfade 100644
--- a/src/test/java/org/shedlang/compiler/ast/untyped/Untyped.java
+++ b/src/test/java/org/shedlang/compiler/ast/untyped/Untyped.java
@@ -86,6 +86,10 @@ public class Untyped {
return new UntypedConstructedTypeNode(receiver, args, Sources.NULL);
}
+ public static UntypedEffectParamNode effectParam(String name) {
+ return new UntypedEffectParamNode(name, Sources.NULL);
+ }
+
public static UntypedBinaryOperationNode equals(
UntypedExpressionNode left,
UntypedExpressionNode right
diff --git a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerTypeLevelParamTests.java b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerTypeLevelParamTests.java
index 08ba5d6b..43030e4a 100644
--- a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerTypeLevelParamTests.java
+++ b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerTypeLevelParamTests.java
@@ -2,6 +2,7 @@ package org.shedlang.compiler.typechecker;
import org.junit.jupiter.api.Test;
import org.shedlang.compiler.ast.untyped.Untyped;
+import org.shedlang.compiler.types.EffectParam;
import org.shedlang.compiler.types.NamespaceName;
import org.shedlang.compiler.types.Scope;
import org.shedlang.compiler.types.TypeParam;
@@ -13,6 +14,19 @@ public class TypeCheckerTypeLevelParamTests {
private static final NamespaceName NAMESPACE_NAME = NamespaceName.of("Example");
@Test
+ public void canTypeCheckEffectParam() {
+ var untyped = Untyped.effectParam("T");
+ var scope = new Scope.Function(NAMESPACE_NAME, "f");
+
+ var result = TypeChecker.typeCheckTypeLevelParam(
+ untyped,
+ scope
+ );
+
+ assertThat(result, equalTo(new EffectParam(scope, "T")));
+ }
+
+ @Test
public void canTypeCheckTypeParam() {
var untyped = Untyped.typeParam("T");
var scope = new Scope.Function(NAMESPACE_NAME, "f");
diff --git a/src/test/java/org/shedlang/compiler/types/TypeMatchers.java b/src/test/java/org/shedlang/compiler/types/TypeMatchers.java
index 1112ff64..2c777c76 100644
--- a/src/test/java/org/shedlang/compiler/types/TypeMatchers.java
+++ b/src/test/java/org/shedlang/compiler/types/TypeMatchers.java
@@ -87,7 +87,7 @@ public class TypeMatchers {
public static Matcher<ConstructedType<?>> isConstructedType(
Matcher<TypeConstructor<?>> constructor,
- Matcher<Iterable<? extends Type>> args
+ Matcher<Iterable<? extends TypeLevelValue>> args
) {
return allOf(
has("constructor", x -> x.constructor(), constructor),