From 041d35ae5b61d3dd94bcd164b72158de2049ff18 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 11 Nov 2023 18:03:47 +0000 Subject: Generate stack IR for effect definition --- .../java/org/shedlang/compiler/stackir/StackCompiler.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'src/main/java') diff --git a/src/main/java/org/shedlang/compiler/stackir/StackCompiler.java b/src/main/java/org/shedlang/compiler/stackir/StackCompiler.java index bad4f72c..da20c770 100644 --- a/src/main/java/org/shedlang/compiler/stackir/StackCompiler.java +++ b/src/main/java/org/shedlang/compiler/stackir/StackCompiler.java @@ -114,6 +114,17 @@ public class StackCompiler { return context; } + private static Context compileEffectDefinition( + TypedEffectDefinitionNode node, + Context context + ) { + var localName = context.shedVariableToLocal(node.effect().name()); + + return context + .addInstruction(new DefineEffectInstruction(node.effect(), node.source())) + .addInstruction(new LocalStoreInstruction(localName, node.source())); + } + public static Context compileExpression(TypedExpressionNode node, Context context) { return switch (node) { case TypedBinaryOperationNode typedBinaryOperationNode -> @@ -450,7 +461,7 @@ public class StackCompiler { compileAssign(assign, context); case TypedEffectDefinitionNode effectDefinition -> - throw new UnsupportedOperationException("TODO"); + compileEffectDefinition(effectDefinition, context); case TypedFunctionDefinitionNode functionDefinition -> compileFunctionDefinition(functionDefinition, context); -- cgit v1.2.3