diff options
| author | Michael Williamson <mike@zwobble.org> | 2024-03-02 14:07:54 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2024-03-02 14:08:37 +0000 |
| commit | dfced83cd4ba6e49c395ea4106fc6f9fd7250de0 (patch) | |
| tree | 15e02918865223d3bb3e736f18972068758c1570 /src/test/java | |
| parent | a7108d4744d972886845690df7f66edb3b5d48ec (diff) | |
Introduce TypeLevelParam
Diffstat (limited to 'src/test/java')
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), |
