BUG=v8:3587
LOG=Y
R=arv@chromium.org, dslomov@chromium.org
Review URL: https://codereview.chromium.org/
585373003
Patch from Caitlin Potter <caitpotter88@gmail.com>.
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24495
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
Baptiste Afsa <baptiste.afsa@arm.com>
Bert Belder <bertbelder@gmail.com>
Burcu Dogan <burcujdogan@gmail.com>
+Caitlin Potter <caitpotter88@gmail.com>
Craig Schlenter <craig.schlenter@gmail.com>
Chunyang Dai <chunyang.dai@intel.com>
Daniel Andersson <kodandersson@gmail.com>
function ObjectKeys(obj) {
- if (!IS_SPEC_OBJECT(obj)) {
- throw MakeTypeError("called_on_non_object", ["Object.keys"]);
- }
+ obj = ToObject(obj);
if (%IsJSProxy(obj)) {
var handler = %GetHandler(obj);
var names = CallTrap0(handler, "keys", DerivedKeysTrap);
// Based on LayoutTests/fast/js/Object-keys.html
-assertThrows(function () { Object.keys(2) }, TypeError);
-assertThrows(function () { Object.keys("foo") }, TypeError);
+assertEquals(Object.keys(2), []);
+assertEquals(Object.keys("foo"), ["0", "1", "2"]);
assertThrows(function () { Object.keys(null) }, TypeError);
assertThrows(function () { Object.keys(undefined) }, TypeError);
'S15.9.3.1_A5_T5': [PASS, FAIL_OK],
'S15.9.3.1_A5_T6': [PASS, FAIL_OK],
+ # ObjectKeys() no longer throws TypeError when passed a primitive value which
+ # is not null or undefined (per ES6).
+ '15.2.3.14-1-1': [SKIP],
+ '15.2.3.14-1-2': [SKIP],
+ '15.2.3.14-1-3': [SKIP],
+
############################ SKIPPED TESTS #############################
# These tests take a looong time to run in debug mode.