diff --git a/src/main/kotlin/cacophony/controlflow/functions/CallableHandlerImpl.kt b/src/main/kotlin/cacophony/controlflow/functions/CallableHandlerImpl.kt index d25255e2..e08e4cf6 100644 --- a/src/main/kotlin/cacophony/controlflow/functions/CallableHandlerImpl.kt +++ b/src/main/kotlin/cacophony/controlflow/functions/CallableHandlerImpl.kt @@ -8,6 +8,7 @@ import cacophony.controlflow.generation.generateLayoutOfVirtualRegisters import cacophony.semantic.analysis.AnalyzedFunction import cacophony.semantic.analysis.EscapeAnalysisResult import cacophony.semantic.analysis.VariablesMap +import cacophony.semantic.syntaxtree.Definition import cacophony.semantic.syntaxtree.FunctionalExpression import kotlin.math.max @@ -60,6 +61,11 @@ abstract class CallableHandlerImpl( ) } + override fun getVariableFromDefinition(varDef: Definition): Variable = + variablesMap.definitions.getOrElse(varDef) { + throw IllegalArgumentException("Variable $varDef have not been defined inside function $function") + } + override fun getAnalyzedFunction() = analyzedFunction protected fun allocateVariables() { diff --git a/src/main/kotlin/cacophony/controlflow/functions/FunctionHandlerImpl.kt b/src/main/kotlin/cacophony/controlflow/functions/FunctionHandlerImpl.kt index 51e3d8e2..26f176ba 100644 --- a/src/main/kotlin/cacophony/controlflow/functions/FunctionHandlerImpl.kt +++ b/src/main/kotlin/cacophony/controlflow/functions/FunctionHandlerImpl.kt @@ -5,7 +5,6 @@ import cacophony.controlflow.generation.* import cacophony.semantic.analysis.AnalyzedFunction import cacophony.semantic.analysis.EscapeAnalysisResult import cacophony.semantic.analysis.VariablesMap -import cacophony.semantic.syntaxtree.Definition import cacophony.semantic.syntaxtree.Definition.FunctionDefinition class FunctionHandlerImpl( @@ -84,11 +83,6 @@ class FunctionHandlerImpl( callerFunction.generateAccessToFramePointer(ancestorFunctionHandlers.first()) } - override fun getVariableFromDefinition(varDef: Definition): Variable = - variablesMap.definitions.getOrElse(varDef) { - throw IllegalArgumentException("Variable $varDef have not been defined inside function $function") - } - override fun getFlattenedArguments(): List = function.arguments .map { variablesMap.definitions[it]!! }