diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-06-10 15:15:20 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-06-10 15:15:20 +0100 |
| commit | e95211da9f73ff0b0bc123ab9d29ef6a0eaf6c67 (patch) | |
| tree | 4685e5cc2c8949a084b940570508f4a7e954dcda /src/test/java | |
| parent | d4e6e270b038e721f7eba92d8dbcfe95ab1b31dd (diff) | |
Type-check function body
Diffstat (limited to 'src/test/java')
| -rw-r--r-- | src/test/java/org/shedlang/compiler/typechecker/TypeCheckerFunctionDefinitionTests.java | 21 |
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")) + )) + ); + } } |
