diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-06-10 19:43:04 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-06-10 19:43:04 +0100 |
| commit | 4564de5f2b387ce71c906d980eb9d9ef2f5c4390 (patch) | |
| tree | 4d31a16a025b8f4cc776d32ff33648ba22290696 /src/main/java/org/shedlang/compiler/stackir | |
| parent | 4089116972049123f447d72d1bd5cb5d7389c25e (diff) | |
Add free variables to define function instruction
Diffstat (limited to 'src/main/java/org/shedlang/compiler/stackir')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/stackir/StackCompiler.java | 1 | ||||
| -rw-r--r-- | src/main/java/org/shedlang/compiler/stackir/instructions/DefineFunctionInstruction.java | 2 |
2 files changed, 3 insertions, 0 deletions
diff --git a/src/main/java/org/shedlang/compiler/stackir/StackCompiler.java b/src/main/java/org/shedlang/compiler/stackir/StackCompiler.java index 55cd628f..aa59bc81 100644 --- a/src/main/java/org/shedlang/compiler/stackir/StackCompiler.java +++ b/src/main/java/org/shedlang/compiler/stackir/StackCompiler.java @@ -69,6 +69,7 @@ public class StackCompiler { node.params().named().stream() .map(param -> new DefineFunctionInstruction.Param(param.name(), param.source())) .toList(), + node.freeVariables(), node.body().stream() .flatMap(statement -> compileFunctionStatement(statement).stream()) .toList(), diff --git a/src/main/java/org/shedlang/compiler/stackir/instructions/DefineFunctionInstruction.java b/src/main/java/org/shedlang/compiler/stackir/instructions/DefineFunctionInstruction.java index fef0583f..379f1f68 100644 --- a/src/main/java/org/shedlang/compiler/stackir/instructions/DefineFunctionInstruction.java +++ b/src/main/java/org/shedlang/compiler/stackir/instructions/DefineFunctionInstruction.java @@ -3,11 +3,13 @@ package org.shedlang.compiler.stackir.instructions; import org.shedlang.compiler.sources.Source; import java.util.List; +import java.util.Set; public record DefineFunctionInstruction( String name, List<Param> positionalParams, List<Param> namedParams, + Set<String> freeVariables, List<Instruction> body, Source source ) implements Instruction { |
