diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-11-02 23:19:37 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-11-02 23:19:37 +0000 |
| commit | a3fc3f4b0c552443f85766fe3e057a9fcbca8cec (patch) | |
| tree | 4ae84b871e3403bbbab22bdac48845693e28b187 /src/test/java/org | |
| parent | c3a032c9d0ffb0c005f81d4dcba477408142914e (diff) | |
Add type checking for unit literal
Diffstat (limited to 'src/test/java/org')
| -rw-r--r-- | src/test/java/org/shedlang/compiler/ast/untyped/Untyped.java | 4 | ||||
| -rw-r--r-- | src/test/java/org/shedlang/compiler/typechecker/TypeCheckerUnitLiteralTests.java | 22 |
2 files changed, 26 insertions, 0 deletions
diff --git a/src/test/java/org/shedlang/compiler/ast/untyped/Untyped.java b/src/test/java/org/shedlang/compiler/ast/untyped/Untyped.java index 031dd362..07f3021d 100644 --- a/src/test/java/org/shedlang/compiler/ast/untyped/Untyped.java +++ b/src/test/java/org/shedlang/compiler/ast/untyped/Untyped.java @@ -212,6 +212,10 @@ public class Untyped { return new UntypedTypeLevelReferenceNode(name, Sources.NULL); } + public static UntypedUnitLiteralNode unitLiteral() { + return new UntypedUnitLiteralNode(Sources.NULL); + } + public static UntypedAssignNode val( String targetName, UntypedExpressionNode expression diff --git a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerUnitLiteralTests.java b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerUnitLiteralTests.java new file mode 100644 index 00000000..07f57003 --- /dev/null +++ b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerUnitLiteralTests.java @@ -0,0 +1,22 @@ +package org.shedlang.compiler.typechecker; + +import org.junit.jupiter.api.Test; +import org.shedlang.compiler.ast.untyped.Untyped; +import org.shedlang.compiler.types.Types; + +import static org.shedlang.compiler.ast.typed.TypedNodeMatchers.isTypedUnitNode; +import static org.shedlang.compiler.typechecker.TypeCheckerTesting.typeCheckExpression; +import static org.zwobble.precisely.AssertThat.assertThat; +import static org.zwobble.precisely.Matchers.equalTo; + +public class TypeCheckerUnitLiteralTests { + @Test + public void unitLiteralIsTypeCheckedAsUnit() { + var untyped = Untyped.unitLiteral(); + + var typed = typeCheckExpression(untyped, TypeCheckerContext.EMPTY); + + assertThat(typed.value(), isTypedUnitNode()); + assertThat(typed.value().type(), equalTo(Types.UNIT)); + } +} |
