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/main/java | |
| parent | c3a032c9d0ffb0c005f81d4dcba477408142914e (diff) | |
Add type checking for unit literal
Diffstat (limited to 'src/main/java')
3 files changed, 18 insertions, 1 deletions
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<TypedExpressionNode> typeCheckUnitLiteral( + UntypedUnitLiteralNode untyped, + TypeCheckerContext context + ) { + return context.toResult(new TypedUnitLiteralNode(untyped.source())); + } + + private static TypeCheckerResult<TypedWhenNode> typeCheckWhen( UntypedWhenNode untyped, TypeCheckerContext context |
