aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-06-10 09:30:28 +0100
committerMichael Williamson <mike@zwobble.org>2023-06-10 09:30:28 +0100
commit9d0e6555d1058cd589a1935e33e78211d1514103 (patch)
treed98d11199f8691251bc3e534b4edc09905beba28 /src/main/java
parentce09d6a644277a7e762e02ea835f62f122c68b58 (diff)
Type check bool literals
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/ast/untyped/UntypedBoolLiteralNode.java9
-rw-r--r--src/main/java/org/shedlang/compiler/ast/untyped/UntypedExpressionNode.java2
-rw-r--r--src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java21
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);
};
}