diff --git a/boa_engine/src/bytecompiler/declaration/declaration_pattern.rs b/boa_engine/src/bytecompiler/declaration/declaration_pattern.rs index ef227a34a69..da345e2bb42 100644 --- a/boa_engine/src/bytecompiler/declaration/declaration_pattern.rs +++ b/boa_engine/src/bytecompiler/declaration/declaration_pattern.rs @@ -190,8 +190,16 @@ impl ByteCompiler<'_, '_> { let exit = self.jump(); self.patch_handler(handler_index); + + let generator_return_handle = self.in_generator.then(|| self.push_handler()); self.emit_opcode(Opcode::Exception); self.emit_opcode(Opcode::PushTrue); + if let Some(generator_return_handle) = generator_return_handle { + let is_not_generator_exit = self.jump(); + self.patch_handler(generator_return_handle); + self.emit_opcode(Opcode::PushFalse); + self.patch_jump(is_not_generator_exit); + } self.patch_jump(exit); let iterator_close_handler = self.push_handler();