From 9d0e6555d1058cd589a1935e33e78211d1514103 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 10 Jun 2023 09:30:28 +0100 Subject: Type check bool literals --- .../ast/untyped/UntypedBoolLiteralNode.java | 9 +++++++++ .../compiler/ast/untyped/UntypedExpressionNode.java | 2 +- .../shedlang/compiler/typechecker/TypeChecker.java | 21 +++++++++++++++------ 3 files changed, 25 insertions(+), 7 deletions(-) create mode 100644 src/main/java/org/shedlang/compiler/ast/untyped/UntypedBoolLiteralNode.java (limited to 'src/main/java') diff --git a/src/main/java/org/shedlang/compiler/ast/untyped/UntypedBoolLiteralNode.java b/src/main/java/org/shedlang/compiler/ast/untyped/UntypedBoolLiteralNode.java new file mode 100644 index 00000000..24ccb37f --- /dev/null +++ b/src/main/java/org/shedlang/compiler/ast/untyped/UntypedBoolLiteralNode.java @@ -0,0 +1,9 @@ +package org.shedlang.compiler.ast.untyped; + +import org.shedlang.compiler.sources.Source; + +public record UntypedBoolLiteralNode( + boolean value, + Source source +) implements UntypedExpressionNode { +} 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 5ef9dc65..10f3f010 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 UntypedCallNode, UntypedIntLiteralNode, UntypedReferenceNode, UntypedStringLiteralNode { + permits UntypedBoolLiteralNode, UntypedCallNode, UntypedIntLiteralNode, UntypedReferenceNode, UntypedStringLiteralNode { } diff --git a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java index a32f1e36..73d3b9b6 100644 --- a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java +++ b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java @@ -1,22 +1,28 @@ package org.shedlang.compiler.typechecker; -import org.shedlang.compiler.ast.typed.TypedExpressionNode; -import org.shedlang.compiler.ast.typed.TypedIntLiteralNode; -import org.shedlang.compiler.ast.typed.TypedReferenceNode; -import org.shedlang.compiler.ast.typed.TypedStringLiteralNode; +import org.shedlang.compiler.ast.typed.*; import org.shedlang.compiler.ast.untyped.*; public class TypeChecker { private TypeChecker() { } + public static TypedExpressionNode typeCheckBoolLiteral( + UntypedBoolLiteralNode untyped + ) { + return new TypedBoolLiteralNode( + untyped.value(), + untyped.source() + ); + } + public static TypedExpressionNode typeCheckExpression( UntypedExpressionNode untyped, TypeCheckerContext context ) { return switch (untyped) { - case UntypedStringLiteralNode untypedStringLiteral -> - typeCheckStringLiteral(untypedStringLiteral); + case UntypedBoolLiteralNode untypedBoolLiteral -> + typeCheckBoolLiteral(untypedBoolLiteral); case UntypedCallNode untypedCall -> throw new UnsupportedOperationException("TODO"); @@ -26,6 +32,9 @@ public class TypeChecker { case UntypedReferenceNode untypedReference -> typeCheckReference(untypedReference, context); + + case UntypedStringLiteralNode untypedStringLiteral -> + typeCheckStringLiteral(untypedStringLiteral); }; } -- cgit v1.2.3