upd: fix some bugs
This commit is contained in:
@ -109,6 +109,7 @@ std::any FucntionContainer::CallFunction(
|
||||
if (i >= func.para_list.size()) break;
|
||||
Variables.WriteVariable(func.para_list[i].name, args[p_src].value, true);
|
||||
args_with_data.insert(func.para_list[i].name);
|
||||
p_src++;
|
||||
}
|
||||
for (int i = 0; i < func.para_list.size(); i++) {
|
||||
while (i < func.para_list.size() &&
|
||||
@ -124,8 +125,9 @@ std::any FucntionContainer::CallFunction(
|
||||
EvalVisitor vis;
|
||||
std::any res = vis.visit(func.code_address);
|
||||
Variables.DestroyFrame();
|
||||
// std::cerr << "function called " << std::endl;
|
||||
FlowType *flow = std::any_cast<FlowType>(&res);
|
||||
if (!flow) {
|
||||
if (flow) {
|
||||
if (flow->ReturnValueLists.size() == 0)
|
||||
return NoneType();
|
||||
else if (flow->ReturnValueLists.size() == 1)
|
||||
@ -133,5 +135,6 @@ std::any FucntionContainer::CallFunction(
|
||||
else
|
||||
return flow->ReturnValueLists;
|
||||
}
|
||||
// std::cerr<<"Return value isn't FlowType"<<std::endl;
|
||||
return NoneType();
|
||||
}
|
Reference in New Issue
Block a user