From a3fc3f4b0c552443f85766fe3e057a9fcbca8cec Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Thu, 2 Nov 2023 23:19:37 +0000 Subject: Add type checking for unit literal --- .../org/shedlang/compiler/ast/untyped/Untyped.java | 4 ++++ .../typechecker/TypeCheckerUnitLiteralTests.java | 22 ++++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 src/test/java/org/shedlang/compiler/typechecker/TypeCheckerUnitLiteralTests.java (limited to 'src/test/java') 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)); + } +} -- cgit v1.2.3