aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-11-02 23:19:37 +0000
committerMichael Williamson <mike@zwobble.org>2023-11-02 23:19:37 +0000
commita3fc3f4b0c552443f85766fe3e057a9fcbca8cec (patch)
tree4ae84b871e3403bbbab22bdac48845693e28b187 /src/main/java
parentc3a032c9d0ffb0c005f81d4dcba477408142914e (diff)
Add type checking for unit literal
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/ast/untyped/UntypedExpressionNode.java2
-rw-r--r--src/main/java/org/shedlang/compiler/ast/untyped/UntypedUnitLiteralNode.java6
-rw-r--r--src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java11
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