diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-10-29 21:37:35 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-10-29 21:37:35 +0000 |
| commit | 914b5c38a44df715ca6dc632ea6486a3f8c6e373 (patch) | |
| tree | efd9bef7d1e834992a99aeb70b1b4cf601ba910d /src/test/java | |
| parent | 0972008d9a725a6ffea83f7d455053690deb8605 (diff) | |
Pass hint when type checking expression
Diffstat (limited to 'src/test/java')
12 files changed, 69 insertions, 48 deletions
diff --git a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerBinaryOperationTests.java b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerBinaryOperationTests.java index 0a07f682..b5546188 100644 --- a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerBinaryOperationTests.java +++ b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerBinaryOperationTests.java @@ -8,6 +8,7 @@ import org.shedlang.compiler.types.Types; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.shedlang.compiler.ast.typed.TypedNodeMatchers.*; +import static org.shedlang.compiler.typechecker.TypeCheckerTesting.typeCheckExpression; import static org.zwobble.precisely.AssertThat.assertThat; import static org.zwobble.precisely.Matchers.equalTo; @@ -16,7 +17,7 @@ public class TypeCheckerBinaryOperationTests { public void whenBothOperandsAreIntsAndOperatorIsAddThenIsTypedAsIntAdd() { var untyped = Untyped.add(Untyped.intLiteral(42), Untyped.intLiteral(47)); - var typed = TypeChecker.typeCheckExpression(untyped, TypeCheckerContext.EMPTY); + var typed = typeCheckExpression(untyped, TypeCheckerContext.EMPTY); assertThat(typed.value(), isTypedIntAddNode( isTypedIntLiteralNode(42), @@ -29,7 +30,7 @@ public class TypeCheckerBinaryOperationTests { public void whenBothOperandsAreIntsAndOperatorIsEqualsThenIsTypedAsIntEquals() { var untyped = Untyped.equals(Untyped.intLiteral(42), Untyped.intLiteral(47)); - var typed = TypeChecker.typeCheckExpression(untyped, TypeCheckerContext.EMPTY); + var typed = typeCheckExpression(untyped, TypeCheckerContext.EMPTY); assertThat(typed.value(), isTypedIntEqualsNode( isTypedIntLiteralNode(42), @@ -42,7 +43,7 @@ public class TypeCheckerBinaryOperationTests { public void whenBothOperandsAreIntsAndOperatorIsNotEqualThenIsTypedAsIntNotEqual() { var untyped = Untyped.notEqual(Untyped.intLiteral(42), Untyped.intLiteral(47)); - var typed = TypeChecker.typeCheckExpression(untyped, TypeCheckerContext.EMPTY); + var typed = typeCheckExpression(untyped, TypeCheckerContext.EMPTY); assertThat(typed.value(), isTypedIntNotEqualNode( isTypedIntLiteralNode(42), @@ -56,7 +57,7 @@ public class TypeCheckerBinaryOperationTests { public void whenBothOperandsAreIntsAndOperatorIsSubThenIsTypedAsIntSub() { var untyped = Untyped.sub(Untyped.intLiteral(42), Untyped.intLiteral(47)); - var typed = TypeChecker.typeCheckExpression(untyped, TypeCheckerContext.EMPTY); + var typed = typeCheckExpression(untyped, TypeCheckerContext.EMPTY); assertThat(typed.value(), isTypedIntSubNode( isTypedIntLiteralNode(42), @@ -71,7 +72,7 @@ public class TypeCheckerBinaryOperationTests { var error = assertThrows( UnsupportedBinaryOperationError.class, - () -> TypeChecker.typeCheckExpression(untyped, TypeCheckerContext.EMPTY) + () -> typeCheckExpression(untyped, TypeCheckerContext.EMPTY) ); assertThat(error.operator(), equalTo(UntypedBinaryOperator.ADD)); @@ -85,7 +86,7 @@ public class TypeCheckerBinaryOperationTests { var error = assertThrows( UnsupportedBinaryOperationError.class, - () -> TypeChecker.typeCheckExpression(untyped, TypeCheckerContext.EMPTY) + () -> typeCheckExpression(untyped, TypeCheckerContext.EMPTY) ); assertThat(error.operator(), equalTo(UntypedBinaryOperator.ADD)); @@ -97,7 +98,7 @@ public class TypeCheckerBinaryOperationTests { public void whenBothOperandsAreStringAndOperatorIsAddThenIsTypedAsStringAdd() { var untyped = Untyped.add(Untyped.stringLiteral("a"), Untyped.stringLiteral("b")); - var typed = TypeChecker.typeCheckExpression(untyped, TypeCheckerContext.EMPTY); + var typed = typeCheckExpression(untyped, TypeCheckerContext.EMPTY); assertThat(typed.value(), isTypedStringAddNode( isTypedStringLiteralNode("a"), diff --git a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerBoolLiteralTests.java b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerBoolLiteralTests.java index c39718de..c96a516f 100644 --- a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerBoolLiteralTests.java +++ b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerBoolLiteralTests.java @@ -5,6 +5,7 @@ import org.shedlang.compiler.ast.untyped.Untyped; import org.shedlang.compiler.types.Types; import static org.shedlang.compiler.ast.typed.TypedNodeMatchers.isTypedBoolLiteralNode; +import static org.shedlang.compiler.typechecker.TypeCheckerTesting.typeCheckExpression; import static org.zwobble.precisely.AssertThat.assertThat; import static org.zwobble.precisely.Matchers.equalTo; @@ -13,7 +14,7 @@ public class TypeCheckerBoolLiteralTests { public void BoolLiteralIsTypeCheckedAsBool() { var untyped = Untyped.boolLiteral(true); - var typed = TypeChecker.typeCheckExpression(untyped, TypeCheckerContext.EMPTY); + var typed = typeCheckExpression(untyped, TypeCheckerContext.EMPTY); assertThat(typed.value(), isTypedBoolLiteralNode(true)); assertThat(typed.value().type(), equalTo(Types.BOOL)); diff --git a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerCallTests.java b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerCallTests.java index 9cfee363..ba18e7d6 100644 --- a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerCallTests.java +++ b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerCallTests.java @@ -13,6 +13,7 @@ import java.util.Map; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.shedlang.compiler.ast.typed.TypedNodeMatchers.*; +import static org.shedlang.compiler.typechecker.TypeCheckerTesting.typeCheckExpression; import static org.zwobble.precisely.AssertThat.assertThat; import static org.zwobble.precisely.Matchers.equalTo; import static org.zwobble.precisely.Matchers.isSequence; @@ -30,7 +31,7 @@ public class TypeCheckerCallTests { var context = TypeCheckerContext.EMPTY .enterGlobal(P.map(Map.entry("f", functionType))); - var typed = TypeChecker.typeCheckExpression(untyped, context); + var typed = typeCheckExpression(untyped, context); assertThat( typed.value(), @@ -53,7 +54,7 @@ public class TypeCheckerCallTests { var error = assertThrows( UnexpectedTypeError.class, - () -> TypeChecker.typeCheckExpression(untyped, context) + () -> typeCheckExpression(untyped, context) ); assertThat(error.expected(), equalTo(TypeSets.FUNCTION)); @@ -76,7 +77,7 @@ public class TypeCheckerCallTests { var context = TypeCheckerContext.EMPTY .enterGlobal(P.map(Map.entry("f", functionType))); - var typed = TypeChecker.typeCheckExpression(untyped, context); + var typed = typeCheckExpression(untyped, context); assertThat( typed.value(), @@ -105,7 +106,7 @@ public class TypeCheckerCallTests { var context = TypeCheckerContext.EMPTY .enterGlobal(P.map(Map.entry("f", functionType))); - var typed = TypeChecker.typeCheckExpression(untyped, context); + var typed = typeCheckExpression(untyped, context); assertThat( typed.value(), @@ -133,7 +134,7 @@ public class TypeCheckerCallTests { var error = assertThrows( UnexpectedTypeError.class, - () -> TypeChecker.typeCheckExpression(untyped, context) + () -> typeCheckExpression(untyped, context) ); assertThat(error.expected(), equalTo(TypeSets.type(Types.INT))); @@ -157,7 +158,7 @@ public class TypeCheckerCallTests { var error = assertThrows( UnexpectedTypeError.class, - () -> TypeChecker.typeCheckExpression(untyped, context) + () -> typeCheckExpression(untyped, context) ); assertThat(error.expected(), equalTo(TypeSets.type(Types.INT))); @@ -179,7 +180,7 @@ public class TypeCheckerCallTests { var error = assertThrows( WrongNumberOfPositionalArgsError.class, - () -> TypeChecker.typeCheckExpression(untyped, context) + () -> typeCheckExpression(untyped, context) ); assertThat(error.expected(), equalTo(0)); @@ -201,7 +202,7 @@ public class TypeCheckerCallTests { var error = assertThrows( MissingNamedArgError.class, - () -> TypeChecker.typeCheckExpression(untyped, context) + () -> typeCheckExpression(untyped, context) ); assertThat(error.argName(), equalTo("x")); @@ -223,7 +224,7 @@ public class TypeCheckerCallTests { var error = assertThrows( UnexpectedNamedArgError.class, - () -> TypeChecker.typeCheckExpression(untyped, context) + () -> typeCheckExpression(untyped, context) ); assertThat(error.argName(), equalTo("x")); @@ -247,7 +248,7 @@ public class TypeCheckerCallTests { var error = assertThrows( CannotPassNamedArgTwiceError.class, - () -> TypeChecker.typeCheckExpression(untyped, context) + () -> typeCheckExpression(untyped, context) ); assertThat(error.argName(), equalTo("x")); @@ -268,7 +269,7 @@ public class TypeCheckerCallTests { var error = assertThrows( CallIsMissingEffectsError.class, - () -> TypeChecker.typeCheckExpression(untyped, context) + () -> typeCheckExpression(untyped, context) ); assertThat(error.effect(), equalTo(Effects.IO)); @@ -289,7 +290,7 @@ public class TypeCheckerCallTests { assertThrows( FunctionHasNoEffectsError.class, - () -> TypeChecker.typeCheckExpression(untyped, context) + () -> typeCheckExpression(untyped, context) ); } @@ -310,7 +311,7 @@ public class TypeCheckerCallTests { Types.UNIT ); - var typed = TypeChecker.typeCheckExpression(untyped, context); + var typed = typeCheckExpression(untyped, context); assertThat( typed.value(), @@ -339,7 +340,7 @@ public class TypeCheckerCallTests { var error = assertThrows( UnexpectedEffectError.class, - () -> TypeChecker.typeCheckExpression(untyped, context) + () -> typeCheckExpression(untyped, context) ); assertThat(error.allowed(), equalTo(Effects.NONE)); @@ -360,7 +361,7 @@ public class TypeCheckerCallTests { .enterGlobal(P.map(Map.entry("User", Types.metaType(structType)))) .addStructTypeInfo(structType, structTypeInfo); - var typed = TypeChecker.typeCheckExpression(untyped, context); + var typed = typeCheckExpression(untyped, context); assertThat( typed.value(), diff --git a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerFieldAccessTests.java b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerFieldAccessTests.java index dfddc7ca..06089584 100644 --- a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerFieldAccessTests.java +++ b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerFieldAccessTests.java @@ -14,6 +14,7 @@ import java.util.Map; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.shedlang.compiler.ast.typed.TypedNodeMatchers.isTypedFieldAccessNode; import static org.shedlang.compiler.ast.typed.TypedNodeMatchers.isTypedReferenceNode; +import static org.shedlang.compiler.typechecker.TypeCheckerTesting.typeCheckExpression; import static org.zwobble.precisely.AssertThat.assertThat; import static org.zwobble.precisely.Matchers.equalTo; @@ -30,7 +31,7 @@ public class TypeCheckerFieldAccessTests { .enterGlobal(P.map(Map.entry("user", structType))) .addStructTypeInfo(structType, structTypeInfo); - var typed = TypeChecker.typeCheckExpression(untyped, context); + var typed = typeCheckExpression(untyped, context); assertThat( typed.value(), @@ -56,7 +57,7 @@ public class TypeCheckerFieldAccessTests { P.orderedMap(Map.entry("name", Types.STRING)) ); - var typed = TypeChecker.typeCheckExpression(untyped, context); + var typed = typeCheckExpression(untyped, context); assertThat( typed.value(), @@ -77,7 +78,7 @@ public class TypeCheckerFieldAccessTests { var context = TypeCheckerContext.EMPTY .enterGlobal(P.map(Map.entry("user", Types.STRING))); - var error = assertThrows(NoSuchFieldError.class, () -> TypeChecker.typeCheckExpression(untyped, context)); + var error = assertThrows(NoSuchFieldError.class, () -> typeCheckExpression(untyped, context)); assertThat(error.type(), equalTo(Types.STRING)); assertThat(error.fieldName(), equalTo("name")); @@ -95,7 +96,7 @@ public class TypeCheckerFieldAccessTests { .enterGlobal(P.map(Map.entry("user", structType))) .addStructTypeInfo(structType, structTypeInfo); - var error = assertThrows(NoSuchFieldError.class, () -> TypeChecker.typeCheckExpression(untyped, context)); + var error = assertThrows(NoSuchFieldError.class, () -> typeCheckExpression(untyped, context)); assertThat(error.type(), equalTo(structType)); assertThat(error.fieldName(), equalTo("name")); @@ -113,7 +114,7 @@ public class TypeCheckerFieldAccessTests { var error = assertThrows( MissingStructTypeInfoError.class, - () -> TypeChecker.typeCheckExpression(untyped, context) + () -> typeCheckExpression(untyped, context) ); assertThat(error.type(), equalTo(structType)); diff --git a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerFunctionExpressionTests.java b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerFunctionExpressionTests.java index 35d61efd..a7ea41d7 100644 --- a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerFunctionExpressionTests.java +++ b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerFunctionExpressionTests.java @@ -12,7 +12,7 @@ import java.util.List; import java.util.Map; import static org.shedlang.compiler.ast.typed.TypedNodeMatchers.*; -import static org.shedlang.compiler.typechecker.TypeChecker.typeCheckExpression; +import static org.shedlang.compiler.typechecker.TypeCheckerTesting.typeCheckExpression; import static org.zwobble.precisely.AssertThat.assertThat; import static org.zwobble.precisely.Matchers.isOptionalEmpty; import static org.zwobble.precisely.Matchers.isSequence; diff --git a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerIfTests.java b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerIfTests.java index 375b8923..0cbca567 100644 --- a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerIfTests.java +++ b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerIfTests.java @@ -13,6 +13,7 @@ import java.util.Map; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.shedlang.compiler.ast.typed.TypedNodeMatchers.*; +import static org.shedlang.compiler.typechecker.TypeCheckerTesting.typeCheckExpression; import static org.zwobble.precisely.AssertThat.assertThat; import static org.zwobble.precisely.Matchers.*; @@ -33,7 +34,7 @@ public class TypeCheckerIfTests { )) ); - var result = TypeChecker.typeCheckExpression(untyped, TypeCheckerContext.EMPTY); + var result = typeCheckExpression(untyped, TypeCheckerContext.EMPTY); assertThat(result.value(), isTypedIfNode( isSequence( @@ -66,7 +67,7 @@ public class TypeCheckerIfTests { )) ); - var result = TypeChecker.typeCheckExpression(untyped, TypeCheckerContext.EMPTY); + var result = typeCheckExpression(untyped, TypeCheckerContext.EMPTY); assertThat(result.value().type(), equalTo(Types.STRING)); } @@ -87,7 +88,7 @@ public class TypeCheckerIfTests { )) ); - var result = TypeChecker.typeCheckExpression(untyped, TypeCheckerContext.EMPTY); + var result = typeCheckExpression(untyped, TypeCheckerContext.EMPTY); assertThat(result.value().type(), equalTo(Types.TOP)); } @@ -106,7 +107,7 @@ public class TypeCheckerIfTests { var error = assertThrows( UnexpectedTypeError.class, - () -> TypeChecker.typeCheckExpression(untyped, TypeCheckerContext.EMPTY) + () -> typeCheckExpression(untyped, TypeCheckerContext.EMPTY) ); assertThat(error.expected(), equalTo(TypeSets.type(Types.BOOL))); @@ -133,7 +134,7 @@ public class TypeCheckerIfTests { Map.entry("x", Variable.defined(Types.STRING, VariableType.VAL)) )); - var result = TypeChecker.typeCheckExpression(untyped, context); + var result = typeCheckExpression(untyped, context); assertThat(result.value(), isTypedIfNode( isSequence( @@ -167,7 +168,7 @@ public class TypeCheckerIfTests { ); var context = TypeCheckerContext.EMPTY; - var result = TypeChecker.typeCheckExpression(untyped, context); + var result = typeCheckExpression(untyped, context); assertThat( result.value(), diff --git a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerIntLiteralTests.java b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerIntLiteralTests.java index ce007495..9eb85e71 100644 --- a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerIntLiteralTests.java +++ b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerIntLiteralTests.java @@ -5,6 +5,7 @@ import org.shedlang.compiler.ast.untyped.Untyped; import org.shedlang.compiler.types.Types; import static org.shedlang.compiler.ast.typed.TypedNodeMatchers.isTypedIntLiteralNode; +import static org.shedlang.compiler.typechecker.TypeCheckerTesting.typeCheckExpression; import static org.zwobble.precisely.AssertThat.assertThat; import static org.zwobble.precisely.Matchers.equalTo; @@ -13,7 +14,7 @@ public class TypeCheckerIntLiteralTests { public void intLiteralIsTypeCheckedAsInt() { var untyped = Untyped.intLiteral(42); - var typed = TypeChecker.typeCheckExpression(untyped, TypeCheckerContext.EMPTY); + var typed = typeCheckExpression(untyped, TypeCheckerContext.EMPTY); assertThat(typed.value(), isTypedIntLiteralNode(42)); assertThat(typed.value().type(), equalTo(Types.INT)); diff --git a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerReferenceTests.java b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerReferenceTests.java index 3a93a5b3..a1bb0917 100644 --- a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerReferenceTests.java +++ b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerReferenceTests.java @@ -10,6 +10,7 @@ import java.util.Map; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.shedlang.compiler.ast.typed.TypedNodeMatchers.isTypedReferenceNode; +import static org.shedlang.compiler.typechecker.TypeCheckerTesting.typeCheckExpression; import static org.zwobble.precisely.AssertThat.assertThat; import static org.zwobble.precisely.Matchers.equalTo; @@ -20,7 +21,7 @@ public class TypeCheckerReferenceTests { var context = TypeCheckerContext.EMPTY .enterGlobal(P.map(Map.entry("x", Types.STRING))); - var typed = TypeChecker.typeCheckExpression(untyped, context); + var typed = typeCheckExpression(untyped, context); assertThat(typed.value(), isTypedReferenceNode("x", Types.STRING)); } @@ -33,7 +34,7 @@ public class TypeCheckerReferenceTests { var error = assertThrows( UnknownVariableError.class, - () -> TypeChecker.typeCheckExpression(untyped, context) + () -> typeCheckExpression(untyped, context) ); assertThat(error.variableName(), equalTo("x")); diff --git a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerStringLiteralTests.java b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerStringLiteralTests.java index 7ede9a67..d596b2ed 100644 --- a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerStringLiteralTests.java +++ b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerStringLiteralTests.java @@ -5,6 +5,7 @@ import org.shedlang.compiler.ast.untyped.Untyped; import org.shedlang.compiler.types.Types; import static org.shedlang.compiler.ast.typed.TypedNodeMatchers.isTypedStringLiteralNode; +import static org.shedlang.compiler.typechecker.TypeCheckerTesting.typeCheckExpression; import static org.zwobble.precisely.AssertThat.assertThat; import static org.zwobble.precisely.Matchers.equalTo; @@ -13,7 +14,7 @@ public class TypeCheckerStringLiteralTests { public void stringLiteralIsTypeCheckedAsString() { var untyped = Untyped.stringLiteral("hello"); - var typed = TypeChecker.typeCheckExpression(untyped, TypeCheckerContext.EMPTY); + var typed = typeCheckExpression(untyped, TypeCheckerContext.EMPTY); assertThat(typed.value(), isTypedStringLiteralNode("hello")); assertThat(typed.value().type(), equalTo(Types.STRING)); diff --git a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerTesting.java b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerTesting.java index e089884f..d98894f2 100644 --- a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerTesting.java +++ b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerTesting.java @@ -1,10 +1,14 @@ package org.shedlang.compiler.typechecker; +import org.shedlang.compiler.ast.typed.TypedExpressionNode; import org.shedlang.compiler.ast.typed.TypedNamespaceStatementNode; +import org.shedlang.compiler.ast.untyped.UntypedExpressionNode; import org.shedlang.compiler.ast.untyped.UntypedNamespaceStatementNode; import org.shedlang.compiler.types.NamespaceName; import org.shedlang.compiler.util.P; +import java.util.Optional; + public class TypeCheckerTesting { private TypeCheckerTesting() { } @@ -20,4 +24,11 @@ public class TypeCheckerTesting { return TypeChecker.typeCheckStepsNamespaceStatement(untyped).typeCheckAllPhases(context); } + + static TypeCheckerResult<? extends TypedExpressionNode> typeCheckExpression( + UntypedExpressionNode untyped, + TypeCheckerContext context + ) { + return TypeChecker.typeCheckExpression(untyped, Optional.empty(), context); + } } diff --git a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerTupleTests.java b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerTupleTests.java index ee719eba..94f78b26 100644 --- a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerTupleTests.java +++ b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerTupleTests.java @@ -8,6 +8,7 @@ import org.shedlang.compiler.types.Types; import java.util.List; import static org.shedlang.compiler.ast.typed.TypedNodeMatchers.*; +import static org.shedlang.compiler.typechecker.TypeCheckerTesting.typeCheckExpression; import static org.zwobble.precisely.AssertThat.assertThat; import static org.zwobble.precisely.Matchers.equalTo; import static org.zwobble.precisely.Matchers.isSequence; @@ -21,7 +22,7 @@ public class TypeCheckerTupleTests { Untyped.intLiteral(42) )); - var typed = TypeChecker.typeCheckExpression(untyped, TypeCheckerContext.EMPTY); + var typed = typeCheckExpression(untyped, TypeCheckerContext.EMPTY); assertThat(typed.value(), isTypedTupleNode(isSequence( isTypedStringLiteralNode("hello"), diff --git a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerWhenTests.java b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerWhenTests.java index cc731458..fe817a7b 100644 --- a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerWhenTests.java +++ b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerWhenTests.java @@ -14,6 +14,7 @@ import java.util.Map; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.shedlang.compiler.ast.typed.TypedNodeMatchers.*; +import static org.shedlang.compiler.typechecker.TypeCheckerTesting.typeCheckExpression; import static org.zwobble.precisely.AssertThat.assertThat; import static org.zwobble.precisely.Matchers.*; @@ -36,7 +37,7 @@ public class TypeCheckerWhenTests { var error = assertThrows( WhenExpressionIsNotInstanceOfSumTypeError.class, - () -> TypeChecker.typeCheckExpression(untyped, context) + () -> typeCheckExpression(untyped, context) ); assertThat(error.actualType(), equalTo(Types.STRING)); @@ -65,7 +66,7 @@ public class TypeCheckerWhenTests { var error = assertThrows( UnhandledVariantError.class, - () -> TypeChecker.typeCheckExpression(untyped, context) + () -> typeCheckExpression(untyped, context) ); assertThat(error.unhandledVariant(), equalTo(VARIANT_TYPE_2)); @@ -101,7 +102,7 @@ public class TypeCheckerWhenTests { var error = assertThrows( UnreachableWhenCaseError.class, - () -> TypeChecker.typeCheckExpression(untyped, context) + () -> typeCheckExpression(untyped, context) ); assertThat(error.caseType(), equalTo(otherStructType)); @@ -135,7 +136,7 @@ public class TypeCheckerWhenTests { var error = assertThrows( DuplicateWhenCaseError.class, - () -> TypeChecker.typeCheckExpression(untyped, context) + () -> typeCheckExpression(untyped, context) ); assertThat(error.caseType(), equalTo(VARIANT_TYPE_1)); @@ -168,7 +169,7 @@ public class TypeCheckerWhenTests { Map.entry(VARIANT_TYPE_2.name(), Types.metaType(VARIANT_TYPE_2)) )); - var result = TypeChecker.typeCheckExpression(untyped, context); + var result = typeCheckExpression(untyped, context); assertThat(result.value(), isTypedWhenNode( isTypedReferenceNode("x", SUM_TYPE), @@ -216,7 +217,7 @@ public class TypeCheckerWhenTests { Map.entry(VARIANT_TYPE_2.name(), Types.metaType(VARIANT_TYPE_2)) )); - var result = TypeChecker.typeCheckExpression(untyped, context); + var result = typeCheckExpression(untyped, context); assertThat(result.value().type(), equalTo(Types.STRING)); } @@ -248,7 +249,7 @@ public class TypeCheckerWhenTests { Map.entry(VARIANT_TYPE_2.name(), Types.metaType(VARIANT_TYPE_2)) )); - var result = TypeChecker.typeCheckExpression(untyped, context); + var result = typeCheckExpression(untyped, context); assertThat(result.value().type(), equalTo(Types.TOP)); } @@ -292,7 +293,7 @@ public class TypeCheckerWhenTests { Map.entry(VARIANT_TYPE_2.name(), Types.metaType(VARIANT_TYPE_2)) )); - var result = TypeChecker.typeCheckExpression(untyped, context); + var result = typeCheckExpression(untyped, context); assertThat(result.value(), isTypedWhenNode( isTypedReferenceNode("x", SUM_TYPE), |
