aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-06-10 11:26:30 +0100
committerMichael Williamson <mike@zwobble.org>2023-06-10 11:26:30 +0100
commit4310c4a044b9d4477b0a15850b32ec25307613a2 (patch)
tree91d8e4ee11c1f6899d1124127a77fe30b752f052 /src/test/java
parent95f373076325515dbb3acfb7f9d39fecdd2cf9ef (diff)
Check number of positional args
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/typechecker/TypeCheckerCallTests.java24
-rw-r--r--src/test/java/org/shedlang/compiler/typechecker/TypeCheckerReferenceTests.java1
2 files changed, 25 insertions, 0 deletions
diff --git a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerCallTests.java b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerCallTests.java
index 884a40c0..d8977b43 100644
--- a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerCallTests.java
+++ b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerCallTests.java
@@ -2,6 +2,8 @@ package org.shedlang.compiler.typechecker;
import org.junit.jupiter.api.Test;
import org.shedlang.compiler.ast.untyped.Untyped;
+import org.shedlang.compiler.typechecker.errors.UnexpectedTypeError;
+import org.shedlang.compiler.typechecker.errors.WrongNumberOfPositionalArgs;
import org.shedlang.compiler.typechecker.typesets.TypeSets;
import org.shedlang.compiler.types.FunctionType;
import org.shedlang.compiler.types.Types;
@@ -162,4 +164,26 @@ public class TypeCheckerCallTests {
assertThat(error.expected(), equalTo(TypeSets.type(Types.INT)));
assertThat(error.actual(), equalTo(Types.STRING));
}
+
+ @Test
+ public void whenWrongNumberOfPositionalArgsArePassedThenErrorIsThrown() {
+ var untyped = Untyped.call(
+ Untyped.reference("f"),
+ List.of(
+ Untyped.stringLiteral("hello")
+ )
+ );
+ var functionType = FunctionType.builder()
+ .build();
+ var context = TypeCheckerContext.EMPTY
+ .enter(P.map(Map.entry("f", functionType)));
+
+ var error = assertThrows(
+ WrongNumberOfPositionalArgs.class,
+ () -> TypeChecker.typeCheckExpression(untyped, context)
+ );
+
+ assertThat(error.expected(), equalTo(0));
+ assertThat(error.actual(), equalTo(1));
+ }
}
diff --git a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerReferenceTests.java b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerReferenceTests.java
index 2e1d3066..659514f2 100644
--- a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerReferenceTests.java
+++ b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerReferenceTests.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.typechecker.errors.UnknownVariableError;
import org.shedlang.compiler.types.Types;
import org.shedlang.compiler.util.P;