From 4564de5f2b387ce71c906d980eb9d9ef2f5c4390 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 10 Jun 2023 19:43:04 +0100 Subject: Add free variables to define function instruction --- src/main/java/org/shedlang/compiler/stackir/StackCompiler.java | 1 + .../compiler/stackir/instructions/DefineFunctionInstruction.java | 2 ++ 2 files changed, 3 insertions(+) (limited to 'src/main/java/org/shedlang/compiler/stackir') 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 positionalParams, List namedParams, + Set freeVariables, List body, Source source ) implements Instruction { -- cgit v1.2.3