Update vm.h

This commit is contained in:
blueloveTH 2023-02-22 19:36:10 +08:00
parent 74ed211f7b
commit 1ad9d2b6f9

View File

@ -129,11 +129,11 @@ public:
PyVar* new_f = _callable->attr().try_get(__new__); PyVar* new_f = _callable->attr().try_get(__new__);
PyVar obj; PyVar obj;
if(new_f != nullptr){ if(new_f != nullptr){
obj = call(*new_f, args, kwargs, false); obj = call(*new_f, std::move(args), kwargs, false);
}else{ }else{
obj = new_object(_callable, DummyInstance()); obj = new_object(_callable, DummyInstance());
PyVarOrNull init_f = getattr(obj, __init__, false); PyVarOrNull init_f = getattr(obj, __init__, false);
if (init_f != nullptr) call(init_f, args, kwargs, false); if (init_f != nullptr) call(init_f, std::move(args), kwargs, false);
} }
return obj; return obj;
} }
@ -158,7 +158,7 @@ public:
int i = 0; int i = 0;
for(StrName name : fn.args){ for(StrName name : fn.args){
if(i < args.size()){ if(i < args.size()){
locals->emplace(name, args[i++]); locals->emplace(name, std::move(args[i++]));
continue; continue;
} }
TypeError("missing positional argument " + name.str().escape(true)); TypeError("missing positional argument " + name.str().escape(true));
@ -168,12 +168,12 @@ public:
if(!fn.starred_arg.empty()){ if(!fn.starred_arg.empty()){
pkpy::List vargs; // handle *args pkpy::List vargs; // handle *args
while(i < args.size()) vargs.push_back(args[i++]); while(i < args.size()) vargs.push_back(std::move(args[i++]));
locals->emplace(fn.starred_arg, PyTuple(std::move(vargs))); locals->emplace(fn.starred_arg, PyTuple(std::move(vargs)));
}else{ }else{
for(StrName key : fn.kwargs_order){ for(StrName key : fn.kwargs_order){
if(i < args.size()){ if(i < args.size()){
locals->emplace(key, args[i++]); locals->emplace(key, std::move(args[i++]));
}else{ }else{
break; break;
} }