From 216d5debd00ab65a79e9c0efda4946cfd824244a Mon Sep 17 00:00:00 2001 From: raskad <32105367+raskad@users.noreply.github.com> Date: Mon, 16 Oct 2023 01:15:17 +0200 Subject: [PATCH] Fix var declaration deleted binding locator --- boa_engine/src/bytecompiler/mod.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/boa_engine/src/bytecompiler/mod.rs b/boa_engine/src/bytecompiler/mod.rs index b61caf514db..419eb2db71d 100644 --- a/boa_engine/src/bytecompiler/mod.rs +++ b/boa_engine/src/bytecompiler/mod.rs @@ -1090,8 +1090,11 @@ impl<'ctx, 'host> ByteCompiler<'ctx, 'host> { match variable.binding() { Binding::Identifier(ident) => { if let Some(expr) = variable.init() { + let binding = self.lexical_environment.get_identifier_reference(*ident); + let index = self.get_or_insert_binding(binding.locator()); + self.emit_with_varying_operand(Opcode::GetLocator, index); self.compile_expr(expr, true); - self.emit_binding(BindingOpcode::InitVar, *ident); + self.emit_opcode(Opcode::SetNameByLocator); } else { self.emit_binding(BindingOpcode::Var, *ident); }