From 0630b1fd9f0d5d3e11319faa25f8b7f6b5aa1dae Mon Sep 17 00:00:00 2001 From: "yurys@chromium.org" Date: Tue, 16 Feb 2010 10:08:39 +0000 Subject: [PATCH] Object.getOwnPropertyNames should return string names for indexed properties Land original change by pfeldman: http://codereview.chromium.org/596117 Review URL: http://codereview.chromium.org/596124 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3866 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/v8natives.js | 7 +++++-- test/mjsunit/object-get-own-property-names.js | 2 ++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/v8natives.js b/src/v8natives.js index 5a47211..6c89715 100644 --- a/src/v8natives.js +++ b/src/v8natives.js @@ -623,9 +623,8 @@ function ObjectGetOwnPropertyNames(obj) { if (%GetInterceptorInfo(obj) & 1) { var indexedInterceptorNames = %GetIndexedInterceptorElementNames(obj); - if (indexedInterceptorNames) { + if (indexedInterceptorNames) propertyNames = propertyNames.concat(indexedInterceptorNames); - } } // Find all the named properties. @@ -643,6 +642,10 @@ function ObjectGetOwnPropertyNames(obj) { } } + // Property names are expected to be strings. + for (var i = 0; i < propertyNames.length; ++i) + propertyNames[i] = ToString(propertyNames[i]); + return propertyNames; } diff --git a/test/mjsunit/object-get-own-property-names.js b/test/mjsunit/object-get-own-property-names.js index f52cee2..33aa85e 100644 --- a/test/mjsunit/object-get-own-property-names.js +++ b/test/mjsunit/object-get-own-property-names.js @@ -57,6 +57,8 @@ propertyNames.sort(); assertEquals(3, propertyNames.length); assertEquals("0", propertyNames[0]); assertEquals("1", propertyNames[1]); +assertEquals("string", typeof propertyNames[0]); +assertEquals("string", typeof propertyNames[1]); assertEquals("length", propertyNames[2]); // Check that no proto properties are returned. -- 2.7.4