diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-06-10 09:30:28 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-06-10 09:30:28 +0100 |
| commit | 9d0e6555d1058cd589a1935e33e78211d1514103 (patch) | |
| tree | d98d11199f8691251bc3e534b4edc09905beba28 /src/main/java | |
| parent | ce09d6a644277a7e762e02ea835f62f122c68b58 (diff) | |
Type check bool literals
Diffstat (limited to 'src/main/java')
3 files changed, 25 insertions, 7 deletions
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); }; } |
