aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/stackir/StackCompiler.java20
1 files changed, 8 insertions, 12 deletions
diff --git a/src/main/java/org/shedlang/compiler/stackir/StackCompiler.java b/src/main/java/org/shedlang/compiler/stackir/StackCompiler.java
index 8e66db30..6b8452c1 100644
--- a/src/main/java/org/shedlang/compiler/stackir/StackCompiler.java
+++ b/src/main/java/org/shedlang/compiler/stackir/StackCompiler.java
@@ -107,18 +107,14 @@ public class StackCompiler {
.map(statement -> compileNamespaceStatement(statement))
.reduce(P.vector(), PVector::plusAll);
- // TODO: handle exports explicitly
- for (var statement : node.body()) {
- switch (statement) {
- case TypedFunctionDefinitionNode functionDefinition ->
- instructions = instructions
- .plus(new LocalLoadInstruction(functionDefinition.name(), functionDefinition.source()))
- .plus(new NamespaceFieldStoreInstruction(
- node.namespaceName(),
- functionDefinition.name(),
- functionDefinition.source()
- ));
- }
+ for (var fieldName : node.fieldNames()) {
+ instructions = instructions
+ .plus(new LocalLoadInstruction(fieldName, node.source()))
+ .plus(new NamespaceFieldStoreInstruction(
+ node.namespaceName(),
+ fieldName,
+ node.source()
+ ));
}
return instructions;