aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-06-10 11:05:14 +0100
committerMichael Williamson <mike@zwobble.org>2023-06-10 11:05:14 +0100
commit482c93fe786d63dd8263bde262acc76467021169 (patch)
tree00db6c679c6b9a3d206384d2c05ef393ffed147e /src/test/java
parent74b2aa135e2bf1af1ef65476aa03406eaaddd2ab (diff)
Type check named args
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/typechecker/TypeCheckerCallTests.java29
1 files changed, 29 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 379368a1..aa7e2bce 100644
--- a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerCallTests.java
+++ b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerCallTests.java
@@ -65,4 +65,33 @@ public class TypeCheckerCallTests {
)))
);
}
+
+ @Test
+ public void namedArgsAreTypedChecked() {
+ var untyped = Untyped.call(
+ Untyped.reference("f"),
+ List.of(),
+ List.of(
+ Untyped.namedArg("x", Untyped.stringLiteral("hello")),
+ Untyped.namedArg("y", Untyped.intLiteral(42))
+ )
+ );
+ var functionType = FunctionType.builder()
+ .addNamedParam("x", Types.STRING)
+ .addNamedParam("y", Types.INT)
+ .build();
+ var context = TypeCheckerContext.EMPTY
+ .enter(P.map(Map.entry("f", functionType)));
+
+ var typed = TypeChecker.typeCheckExpression(untyped, context);
+
+ assertThat(
+ typed,
+ isTypedCallNode()
+ .withArgs(isTypedArgsNode().withNamed(isSequence(
+ isTypedNamedArgNode("x", isTypedStringLiteralNode("hello")),
+ isTypedNamedArgNode("y", isTypedIntLiteralNode(42))
+ )))
+ );
+ }
}