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 --- .../shedlang/compiler/ast/untyped/UntypedExpressionNode.java | 2 +- .../shedlang/compiler/ast/untyped/UntypedUnitLiteralNode.java | 6 ++++++ .../java/org/shedlang/compiler/typechecker/TypeChecker.java | 11 +++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 src/main/java/org/shedlang/compiler/ast/untyped/UntypedUnitLiteralNode.java (limited to 'src/main/java') diff --git a/src/main/java/org/shedlang/compiler/ast/untyped/UntypedExpressionNode.java b/src/main/java/org/shedlang/compiler/ast/untyped/UntypedExpressionNode.java index 60f80022..a8c068e0 100644 --- a/src/main/java/org/shedlang/compiler/ast/untyped/UntypedExpressionNode.java +++ b/src/main/java/org/shedlang/compiler/ast/untyped/UntypedExpressionNode.java @@ -1,5 +1,5 @@ package org.shedlang.compiler.ast.untyped; public sealed interface UntypedExpressionNode extends UntypedNode - permits UntypedBinaryOperationNode, UntypedBoolLiteralNode, UntypedCallNode, UntypedFieldAccessNode, UntypedFunctionExpressionNode, UntypedIfNode, UntypedIntLiteralNode, UntypedReferenceNode, UntypedStringLiteralNode, UntypedTryNode, UntypedTupleNode, UntypedWhenNode { + permits UntypedBinaryOperationNode, UntypedBoolLiteralNode, UntypedCallNode, UntypedFieldAccessNode, UntypedFunctionExpressionNode, UntypedIfNode, UntypedIntLiteralNode, UntypedReferenceNode, UntypedStringLiteralNode, UntypedTryNode, UntypedTupleNode, UntypedUnitLiteralNode, UntypedWhenNode { } diff --git a/src/main/java/org/shedlang/compiler/ast/untyped/UntypedUnitLiteralNode.java b/src/main/java/org/shedlang/compiler/ast/untyped/UntypedUnitLiteralNode.java new file mode 100644 index 00000000..4ca98c78 --- /dev/null +++ b/src/main/java/org/shedlang/compiler/ast/untyped/UntypedUnitLiteralNode.java @@ -0,0 +1,6 @@ +package org.shedlang.compiler.ast.untyped; + +import org.shedlang.compiler.sources.Source; + +public record UntypedUnitLiteralNode(Source source) implements UntypedExpressionNode { +} diff --git a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java index 6dd1a3f3..2991c344 100644 --- a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java +++ b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java @@ -430,6 +430,9 @@ public class TypeChecker { case UntypedTupleNode untypedTuple -> typeCheckTuple(untypedTuple, context); + case UntypedUnitLiteralNode untypedUnit -> + typeCheckUnitLiteral(untypedUnit, context); + case UntypedWhenNode untypedWhen -> typeCheckWhen(untypedWhen, context); }; @@ -1520,6 +1523,14 @@ public class TypeChecker { }; } + private static TypeCheckerResult typeCheckUnitLiteral( + UntypedUnitLiteralNode untyped, + TypeCheckerContext context + ) { + return context.toResult(new TypedUnitLiteralNode(untyped.source())); + } + + private static TypeCheckerResult typeCheckWhen( UntypedWhenNode untyped, TypeCheckerContext context -- cgit v1.2.3