diff --git a/es2panda/compiler/function/functionBuilder.cpp b/es2panda/compiler/function/functionBuilder.cpp index 10a02a800b3de747a0f3db49519113eb465049b4..9167371e72e05ffb63a66f7c5c54a876cd69e96e 100644 --- a/es2panda/compiler/function/functionBuilder.cpp +++ b/es2panda/compiler/function/functionBuilder.cpp @@ -303,7 +303,9 @@ void FunctionBuilder::YieldStar(const ir::AstNode *node) pg_->LoadAccumulatorInt(node, static_cast(ResumeMode::THROW)); // d. Assert: awaited.[[Type]] is normal. // e. Return Completion { [[Type]]: return, [[Value]]: awaited.[[Value]], [[Target]]: empty }. - pg_->Condition(node, lexer::TokenType::PUNCTUATOR_EQUAL, receivedType, returnCompletion); + pg_->Condition(node, lexer::TokenType::PUNCTUATOR_NOT_EQUAL, receivedType, loopStart); + pg_->LoadAccumulatorInt(node, static_cast(ResumeMode::RETURN)); + pg_->StoreAccumulator(node, receivedType); } else { // vii. Else, set received to GeneratorYield(innerResult). // 8. Else, set received to GeneratorYield(innerResult).