diff --git a/Cargo.lock b/Cargo.lock index eecd78af623..4526ef3d6e2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -682,7 +682,7 @@ version = "4.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42dfd32784433290c51d92c438bb72ea5063797fc3cc9a21a8c4346bebbb2098" dependencies = [ - "bitflags 2.0.1", + "bitflags 2.0.2", "clap_derive", "clap_lex 0.3.3", "is-terminal", diff --git a/boa_engine/src/bytecompiler/expression/mod.rs b/boa_engine/src/bytecompiler/expression/mod.rs index a4df995d55b..777fc0e61fb 100644 --- a/boa_engine/src/bytecompiler/expression/mod.rs +++ b/boa_engine/src/bytecompiler/expression/mod.rs @@ -176,6 +176,7 @@ impl ByteCompiler<'_, '_> { self.emit_opcode(Opcode::Await); let (skip_yield, skip_yield_await) = self.emit_opcode_with_two_operands(Opcode::AsyncGeneratorNext); + self.emit_opcode(Opcode::PushUndefined); self.emit_opcode(Opcode::Yield); self.emit_opcode(Opcode::GeneratorNext); self.patch_jump(skip_yield); diff --git a/boa_engine/src/vm/mod.rs b/boa_engine/src/vm/mod.rs index 1f2fee777e4..e649a34080f 100644 --- a/boa_engine/src/vm/mod.rs +++ b/boa_engine/src/vm/mod.rs @@ -288,11 +288,7 @@ impl Context<'_> { return CompletionRecord::Normal(result); } EarlyReturnType::Yield => { - let result = self - .vm - .stack - .pop() - .expect("Yield must always return a result."); + let result = self.vm.pop(); self.vm.frame_mut().early_return = None; return CompletionRecord::Return(result); }