From e95211da9f73ff0b0bc123ab9d29ef6a0eaf6c67 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 10 Jun 2023 15:15:20 +0100 Subject: Type-check function body --- .../TypeCheckerFunctionDefinitionTests.java | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'src/test/java') 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")) + )) + ); + } } -- cgit v1.2.3