From 2c10bd72f2e33c85157ddf2aff7c139f198ec2b7 Mon Sep 17 00:00:00 2001 From: Gunnar Beutner Date: Mon, 7 Jun 2021 22:06:02 +0200 Subject: [PATCH] LibJS: Make sure scope expressions yield the correct value When evaluated as an expression "{ 3 }" should yield 3. This updates the bytecode interpreter to make it so. --- Userland/Libraries/LibJS/Bytecode/ASTCodegen.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Userland/Libraries/LibJS/Bytecode/ASTCodegen.cpp b/Userland/Libraries/LibJS/Bytecode/ASTCodegen.cpp index 48a8633f9b..526b7a1b76 100644 --- a/Userland/Libraries/LibJS/Bytecode/ASTCodegen.cpp +++ b/Userland/Libraries/LibJS/Bytecode/ASTCodegen.cpp @@ -21,10 +21,11 @@ Optional ASTNode::generate_bytecode(Bytecode::Generator&) co Optional ScopeNode::generate_bytecode(Bytecode::Generator& generator) const { generator.emit(*this); + Optional last_value_reg; for (auto& child : children()) { - [[maybe_unused]] auto reg = child.generate_bytecode(generator); + last_value_reg = child.generate_bytecode(generator); } - return {}; + return last_value_reg; } Optional EmptyStatement::generate_bytecode(Bytecode::Generator&) const