Explorar o código

LibJS/Bytecode: Make for..in iterate property names as string

Makes 107 new tests pass in test262. :^)
Andreas Kling %!s(int64=2) %!d(string=hai) anos
pai
achega
0d4c7fa392
Modificáronse 1 ficheiros con 1 adicións e 1 borrados
  1. 1 1
      Userland/Libraries/LibJS/Bytecode/Op.cpp

+ 1 - 1
Userland/Libraries/LibJS/Bytecode/Op.cpp

@@ -981,7 +981,7 @@ ThrowCompletionOr<void> GetObjectPropertyIterator::execute_impl(Bytecode::Interp
                     result_object->define_direct_property(vm.names.done, JS::Value(false), default_attributes);
                     result_object->define_direct_property(vm.names.done, JS::Value(false), default_attributes);
 
 
                     if (key.is_number())
                     if (key.is_number())
-                        result_object->define_direct_property(vm.names.value, JS::Value(key.as_number()), default_attributes);
+                        result_object->define_direct_property(vm.names.value, PrimitiveString::create(vm, TRY_OR_THROW_OOM(vm, String::number(key.as_number()))), default_attributes);
                     else if (key.is_string())
                     else if (key.is_string())
                         result_object->define_direct_property(vm.names.value, PrimitiveString::create(vm, key.as_string()), default_attributes);
                         result_object->define_direct_property(vm.names.value, PrimitiveString::create(vm, key.as_string()), default_attributes);
                     else
                     else