diff options
author | Lars Knoll <lars.knoll@qt.io> | 2018-05-31 16:06:34 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2018-09-07 10:32:01 +0000 |
commit | ff5bc526b4868aef9fb3a551afc5636b308a3d83 (patch) | |
tree | 692e956d6fcfd5fc4f064dce7275abeb51429c3a /src/qml/jsruntime/qv4generatorobject.cpp | |
parent | bd4064eabf79a6166805c877ee622931df6fb172 (diff) |
Add support for yield*
Change-Id: I5b054b59519ed825459a5b0b0a7cd2c6fc8a3797
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/qml/jsruntime/qv4generatorobject.cpp')
-rw-r--r-- | src/qml/jsruntime/qv4generatorobject.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/qml/jsruntime/qv4generatorobject.cpp b/src/qml/jsruntime/qv4generatorobject.cpp index 82d8d88882..dd3d0328b0 100644 --- a/src/qml/jsruntime/qv4generatorobject.cpp +++ b/src/qml/jsruntime/qv4generatorobject.cpp @@ -215,6 +215,7 @@ ReturnedValue GeneratorObject::resume(ExecutionEngine *engine, const Value &arg) const char *code = gp->cppFrame.yield; gp->cppFrame.yield = nullptr; gp->cppFrame.jsFrame->accumulator = arg; + gp->cppFrame.yieldIsIterator = false; Scope scope(engine); ScopedValue result(scope, Moth::VME::interpret(&gp->cppFrame, engine, code)); @@ -225,6 +226,8 @@ ReturnedValue GeneratorObject::resume(ExecutionEngine *engine, const Value &arg) gp->state = done ? GeneratorState::Completed : GeneratorState::SuspendedYield; if (engine->hasException) return Encode::undefined(); + if (gp->cppFrame.yieldIsIterator) + return result->asReturnedValue(); return IteratorPrototype::createIterResultObject(engine, result, done); } |