From 8a3e3503215f993b30412abb12354e11371be265 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Thu, 15 Jun 2023 12:38:28 +0200 Subject: [PATCH] LibJS/Bytecode: Don't choke on MemberExpression with PrivateIdentifier --- Userland/Libraries/LibJS/AST.cpp | 2 ++ Userland/Libraries/LibJS/Bytecode/ASTCodegen.cpp | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/Userland/Libraries/LibJS/AST.cpp b/Userland/Libraries/LibJS/AST.cpp index a234a0066f..9217f7cce5 100644 --- a/Userland/Libraries/LibJS/AST.cpp +++ b/Userland/Libraries/LibJS/AST.cpp @@ -3289,6 +3289,8 @@ DeprecatedString MemberExpression::to_string_approximation() const object_string = static_cast(*m_object).string(); if (is_computed()) return DeprecatedString::formatted("{}[]", object_string); + if (is(*m_property)) + return DeprecatedString::formatted("{}.{}", object_string, verify_cast(*m_property).string()); return DeprecatedString::formatted("{}.{}", object_string, verify_cast(*m_property).string()); } diff --git a/Userland/Libraries/LibJS/Bytecode/ASTCodegen.cpp b/Userland/Libraries/LibJS/Bytecode/ASTCodegen.cpp index 9898cac2cc..84981ae6e8 100644 --- a/Userland/Libraries/LibJS/Bytecode/ASTCodegen.cpp +++ b/Userland/Libraries/LibJS/Bytecode/ASTCodegen.cpp @@ -1357,7 +1357,12 @@ Bytecode::CodeGenerationErrorOr CallExpression::generate_bytecode(Bytecode TRY(member_expression.property().generate_bytecode(generator)); generator.emit(this_reg); } else { - auto identifier_table_ref = generator.intern_identifier(verify_cast(member_expression.property()).string()); + auto identifier_table_ref = [&] { + if (is(member_expression.property())) + return generator.intern_identifier(verify_cast(member_expression.property()).string()); + return generator.intern_identifier(verify_cast(member_expression.property()).string()); + }(); + generator.emit(identifier_table_ref); } }