aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-09-28 11:13:04 +0100
committerMichael Williamson <mike@zwobble.org>2023-09-28 11:13:04 +0100
commit97daf07ea93e36b5be1db2a270dcdd5d8e25cec7 (patch)
treec8eb4e1e7094d6beee77c263c12a93090cbb77d8 /src/main/java/org
parent7130b49f3345b1e381161e8c6c83efab9afedb10 (diff)
Add typed field access node
Diffstat (limited to 'src/main/java/org')
-rw-r--r--src/main/java/org/shedlang/compiler/ast/typed/TypedExpressionNode.java2
-rw-r--r--src/main/java/org/shedlang/compiler/ast/typed/TypedFieldAccessNode.java12
-rw-r--r--src/main/java/org/shedlang/compiler/stackir/StackCompiler.java6
3 files changed, 19 insertions, 1 deletions
diff --git a/src/main/java/org/shedlang/compiler/ast/typed/TypedExpressionNode.java b/src/main/java/org/shedlang/compiler/ast/typed/TypedExpressionNode.java
index 8d0d323e..93758ccf 100644
--- a/src/main/java/org/shedlang/compiler/ast/typed/TypedExpressionNode.java
+++ b/src/main/java/org/shedlang/compiler/ast/typed/TypedExpressionNode.java
@@ -4,6 +4,6 @@ import org.shedlang.compiler.types.Type;
public sealed interface TypedExpressionNode
extends TypedNode
- permits TypedBinaryOperationNode, TypedBoolLiteralNode, TypedCallNode, TypedIfNode, TypedIntLiteralNode, TypedReferenceNode, TypedStringLiteralNode, TypedTupleNode {
+ permits TypedBinaryOperationNode, TypedBoolLiteralNode, TypedCallNode, TypedFieldAccessNode, TypedIfNode, TypedIntLiteralNode, TypedReferenceNode, TypedStringLiteralNode, TypedTupleNode {
Type type();
}
diff --git a/src/main/java/org/shedlang/compiler/ast/typed/TypedFieldAccessNode.java b/src/main/java/org/shedlang/compiler/ast/typed/TypedFieldAccessNode.java
new file mode 100644
index 00000000..ca088e48
--- /dev/null
+++ b/src/main/java/org/shedlang/compiler/ast/typed/TypedFieldAccessNode.java
@@ -0,0 +1,12 @@
+package org.shedlang.compiler.ast.typed;
+
+import org.shedlang.compiler.sources.Source;
+import org.shedlang.compiler.types.Type;
+
+public record TypedFieldAccessNode(
+ TypedExpressionNode receiver,
+ String fieldName,
+ Type type,
+ Source source
+) implements TypedExpressionNode {
+}
diff --git a/src/main/java/org/shedlang/compiler/stackir/StackCompiler.java b/src/main/java/org/shedlang/compiler/stackir/StackCompiler.java
index 07180669..35d6f497 100644
--- a/src/main/java/org/shedlang/compiler/stackir/StackCompiler.java
+++ b/src/main/java/org/shedlang/compiler/stackir/StackCompiler.java
@@ -121,6 +121,9 @@ public class StackCompiler {
case TypedCallNode typedCallNode ->
compileCall(typedCallNode, context);
+ case TypedFieldAccessNode typedFieldAccessNode ->
+ throw new UnsupportedOperationException("TODO");
+
case TypedIfNode typedIfNode ->
compileIf(typedIfNode, context);
@@ -340,6 +343,9 @@ public class StackCompiler {
case TypedFunctionDefinitionNode functionDefinition ->
compileFunctionDefinition(functionDefinition, context);
+
+ case TypedStructDefinitionNode structDefinition ->
+ throw new UnsupportedOperationException("TODO");
};
}