Переглянути джерело

LibJS/Bytecode: Prefer alias over name in object pattern bindings

10 new passes on test262. :^)
Andreas Kling 2 роки тому
батько
коміт
aec3d9d84e
1 змінених файлів з 3 додано та 1 видалено
  1. 3 1
      Userland/Libraries/LibJS/Bytecode/ASTCodegen.cpp

+ 3 - 1
Userland/Libraries/LibJS/Bytecode/ASTCodegen.cpp

@@ -1084,7 +1084,9 @@ static Bytecode::CodeGenerationErrorOr<void> generate_object_binding_pattern_byt
                 Bytecode::Label { if_not_undefined_block });
                 Bytecode::Label { if_not_undefined_block });
 
 
             generator.switch_to_basic_block(if_undefined_block);
             generator.switch_to_basic_block(if_undefined_block);
-            if (auto const* lhs = name.get_pointer<NonnullRefPtr<Identifier const>>()) {
+            if (auto const* alias_identifier = alias.get_pointer<NonnullRefPtr<Identifier const>>()) {
+                TRY(generator.emit_named_evaluation_if_anonymous_function(*initializer, (*alias_identifier)->string()));
+            } else if (auto const* lhs = name.get_pointer<NonnullRefPtr<Identifier const>>()) {
                 TRY(generator.emit_named_evaluation_if_anonymous_function(*initializer, (*lhs)->string()));
                 TRY(generator.emit_named_evaluation_if_anonymous_function(*initializer, (*lhs)->string()));
             } else {
             } else {
                 TRY(initializer->generate_bytecode(generator));
                 TRY(initializer->generate_bytecode(generator));