bodyExecute method

  1. @override
FunctionCallBodyExecutionResult bodyExecute(
  1. DartBlockArbiter arbiter,
  2. covariant FunctionCallPreExecutionResult preExecutionResult
)
override

Implementation

@override
FunctionCallBodyExecutionResult bodyExecute(
  DartBlockArbiter arbiter,
  FunctionCallPreExecutionResult preExecutionResult,
) {
  // Declare parameters (VariableDeclarationStatements) in the current scope
  for (var parameterDeclaration in preExecutionResult.parameterDeclarations) {
    parameterDeclaration.run(arbiter);
  }

  DartBlockValue? returnValue;
  // Extract the argument values that were already validated in preExecute
  final argValues = preExecutionResult.parameterDeclarations
      .map((decl) => arbiter.getVariableValue(decl.name)!)
      .toList();
  // Actual execution logic of the function
  returnValue = preExecutionResult.dartBlockFunction.execute(
    arbiter,
    argValues,
  );

  return FunctionCallBodyExecutionResult(
    preExecutionResult.dartBlockFunction,
    returnValue,
  );
}