aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-10-29 21:37:35 +0000
committerMichael Williamson <mike@zwobble.org>2023-10-29 21:37:35 +0000
commit914b5c38a44df715ca6dc632ea6486a3f8c6e373 (patch)
treeefd9bef7d1e834992a99aeb70b1b4cf601ba910d /src/test/java
parent0972008d9a725a6ffea83f7d455053690deb8605 (diff)
Pass hint when type checking expression
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/typechecker/TypeCheckerBinaryOperationTests.java15
-rw-r--r--src/test/java/org/shedlang/compiler/typechecker/TypeCheckerBoolLiteralTests.java3
-rw-r--r--src/test/java/org/shedlang/compiler/typechecker/TypeCheckerCallTests.java31
-rw-r--r--src/test/java/org/shedlang/compiler/typechecker/TypeCheckerFieldAccessTests.java11
-rw-r--r--src/test/java/org/shedlang/compiler/typechecker/TypeCheckerFunctionExpressionTests.java2
-rw-r--r--src/test/java/org/shedlang/compiler/typechecker/TypeCheckerIfTests.java13
-rw-r--r--src/test/java/org/shedlang/compiler/typechecker/TypeCheckerIntLiteralTests.java3
-rw-r--r--src/test/java/org/shedlang/compiler/typechecker/TypeCheckerReferenceTests.java5
-rw-r--r--src/test/java/org/shedlang/compiler/typechecker/TypeCheckerStringLiteralTests.java3
-rw-r--r--src/test/java/org/shedlang/compiler/typechecker/TypeCheckerTesting.java11
-rw-r--r--src/test/java/org/shedlang/compiler/typechecker/TypeCheckerTupleTests.java3
-rw-r--r--src/test/java/org/shedlang/compiler/typechecker/TypeCheckerWhenTests.java17
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),