aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-06-10 15:15:20 +0100
committerMichael Williamson <mike@zwobble.org>2023-06-10 15:15:20 +0100
commite95211da9f73ff0b0bc123ab9d29ef6a0eaf6c67 (patch)
tree4685e5cc2c8949a084b940570508f4a7e954dcda /src/test/java
parentd4e6e270b038e721f7eba92d8dbcfe95ab1b31dd (diff)
Type-check function body
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/typechecker/TypeCheckerFunctionDefinitionTests.java21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerFunctionDefinitionTests.java b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerFunctionDefinitionTests.java
index 88027a69..889698ac 100644
--- a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerFunctionDefinitionTests.java
+++ b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerFunctionDefinitionTests.java
@@ -35,4 +35,25 @@ public class TypeCheckerFunctionDefinitionTests {
.withBody(isSequence())
);
}
+
+ @Test
+ public void bodyIsTypeChecked() {
+ var untyped = UntypedFunctionDefinitionNode.builder()
+ .withName("f")
+ .withReturnType(Untyped.typeLevelReference("Unit"))
+ .addStatement(Untyped.expressionStatement(Untyped.stringLiteral("hello")))
+ .build();
+ var context = TypeCheckerContext.EMPTY
+ .enter(P.map(Map.entry("Unit", Types.metaType(Types.UNIT))));
+
+ var typed = TypeChecker.typeCheckNamespaceStatement(untyped, context);
+
+ assertThat(
+ typed,
+ isTypedFunctionDefinitionNode()
+ .withBody(isSequence(
+ isTypedExpressionStatementNode(isTypedStringLiteralNode("hello"))
+ ))
+ );
+ }
}