Title: [159063] trunk
Revision
159063
Author
[email protected]
Date
2013-11-11 12:53:13 -0800 (Mon, 11 Nov 2013)

Log Message

ExtJS breaks with modern Array.prototype.values API due to use of with()
https://bugs.webkit.org/show_bug.cgi?id=123440

Reviewed by Beth Dakin.

Source/_javascript_Core:

As with our attempt to make Arguments use the Array prototype, ExtJS has
a weird dependency on not adding new APIs to core types.  In this case
Array.prototype.values.  The fix is to remove it, and push for ES6 to drop
the API.

* runtime/ArrayPrototype.cpp:

LayoutTests:

Update tests for removal of Array.prototype.values, and add test to ensure that
it's gone.

* js/Object-getOwnPropertyNames-expected.txt:
* js/array-iterators-expected.txt:
* js/basic-for-of-expected.txt:
* js/script-tests/Object-getOwnPropertyNames.js:
* js/script-tests/array-iterators.js:
* js/script-tests/basic-for-of.js:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (159062 => 159063)


--- trunk/LayoutTests/ChangeLog	2013-11-11 20:17:49 UTC (rev 159062)
+++ trunk/LayoutTests/ChangeLog	2013-11-11 20:53:13 UTC (rev 159063)
@@ -1,5 +1,22 @@
 2013-11-11  Oliver Hunt  <[email protected]>
 
+        ExtJS breaks with modern Array.prototype.values API due to use of with()
+        https://bugs.webkit.org/show_bug.cgi?id=123440
+
+        Reviewed by Beth Dakin.
+
+        Update tests for removal of Array.prototype.values, and add test to ensure that
+        it's gone.
+
+        * js/Object-getOwnPropertyNames-expected.txt:
+        * js/array-iterators-expected.txt:
+        * js/basic-for-of-expected.txt:
+        * js/script-tests/Object-getOwnPropertyNames.js:
+        * js/script-tests/array-iterators.js:
+        * js/script-tests/basic-for-of.js:
+
+2013-11-11  Oliver Hunt  <[email protected]>
+
         Whoops, fix test post move
 
         * js/basic-set.html:

Modified: trunk/LayoutTests/js/Object-getOwnPropertyNames-expected.txt (159062 => 159063)


--- trunk/LayoutTests/js/Object-getOwnPropertyNames-expected.txt	2013-11-11 20:17:49 UTC (rev 159062)
+++ trunk/LayoutTests/js/Object-getOwnPropertyNames-expected.txt	2013-11-11 20:53:13 UTC (rev 159063)
@@ -45,7 +45,7 @@
 PASS getSortedOwnPropertyNames(Function) is ['length', 'name', 'prototype']
 PASS getSortedOwnPropertyNames(Function.prototype) is ['apply', 'bind', 'call', 'constructor', 'length', 'name', 'toString']
 PASS getSortedOwnPropertyNames(Array) is ['isArray', 'length', 'name', 'prototype']
-PASS getSortedOwnPropertyNames(Array.prototype) is ['concat', 'constructor', 'entries', 'every', 'filter', 'forEach', 'indexOf', 'join', 'keys', 'lastIndexOf', 'length', 'map', 'pop', 'push', 'reduce', 'reduceRight', 'reverse', 'shift', 'slice', 'some', 'sort', 'splice', 'toLocaleString', 'toString', 'unshift', 'values']
+PASS getSortedOwnPropertyNames(Array.prototype) is ['concat', 'constructor', 'entries', 'every', 'filter', 'forEach', 'indexOf', 'join', 'keys', 'lastIndexOf', 'length', 'map', 'pop', 'push', 'reduce', 'reduceRight', 'reverse', 'shift', 'slice', 'some', 'sort', 'splice', 'toLocaleString', 'toString', 'unshift']
 PASS getSortedOwnPropertyNames(String) is ['fromCharCode', 'length', 'name', 'prototype']
 PASS getSortedOwnPropertyNames(String.prototype) is ['anchor', 'big', 'blink', 'bold', 'charAt', 'charCodeAt', 'concat', 'constructor', 'fixed', 'fontcolor', 'fontsize', 'indexOf', 'italics', 'lastIndexOf', 'length', 'link', 'localeCompare', 'match', 'replace', 'search', 'slice', 'small', 'split', 'strike', 'sub', 'substr', 'substring', 'sup', 'toLocaleLowerCase', 'toLocaleUpperCase', 'toLowerCase', 'toString', 'toUpperCase', 'trim', 'trimLeft', 'trimRight', 'valueOf']
 PASS getSortedOwnPropertyNames(Boolean) is ['length', 'name', 'prototype']

Modified: trunk/LayoutTests/js/array-iterators-expected.txt (159062 => 159063)


--- trunk/LayoutTests/js/array-iterators-expected.txt	2013-11-11 20:17:49 UTC (rev 159062)
+++ trunk/LayoutTests/js/array-iterators-expected.txt	2013-11-11 20:53:13 UTC (rev 159063)
@@ -3,6 +3,7 @@
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
+PASS 'values' in [] is false
 PASS key is 0
 PASS key is 1
 PASS key is 2
@@ -10,13 +11,6 @@
 PASS key is 4
 PASS key is 5
 PASS testArray.length is 6
-PASS value is 1
-PASS value is 2
-PASS value is 3
-PASS value is 4
-PASS value is 5
-PASS value is 6
-PASS testArray.length is 6
 PASS value is testArray[key]
 PASS key is 0
 PASS value is 1

Modified: trunk/LayoutTests/js/basic-for-of-expected.txt (159062 => 159063)


--- trunk/LayoutTests/js/basic-for-of-expected.txt	2013-11-11 20:17:49 UTC (rev 159062)
+++ trunk/LayoutTests/js/basic-for-of-expected.txt	2013-11-11 20:53:13 UTC (rev 159063)
@@ -10,13 +10,6 @@
 PASS value is testArray[4]
 PASS value is testArray[5]
 PASS testArray.length is 6
-PASS value is testArray[0]
-PASS value is testArray[1]
-PASS value is testArray[2]
-PASS value is testArray[3]
-PASS value is testArray[4]
-PASS value is testArray[5]
-PASS testArray.length is 6
 PASS key is 0
 PASS key is 1
 PASS key is 2

Modified: trunk/LayoutTests/js/script-tests/Object-getOwnPropertyNames.js (159062 => 159063)


--- trunk/LayoutTests/js/script-tests/Object-getOwnPropertyNames.js	2013-11-11 20:17:49 UTC (rev 159062)
+++ trunk/LayoutTests/js/script-tests/Object-getOwnPropertyNames.js	2013-11-11 20:53:13 UTC (rev 159063)
@@ -53,7 +53,7 @@
     "Function": "['length', 'name', 'prototype']",
     "Function.prototype": "['apply', 'bind', 'call', 'constructor', 'length', 'name', 'toString']",
     "Array": "['isArray', 'length', 'name', 'prototype']",
-    "Array.prototype": "['concat', 'constructor', 'entries', 'every', 'filter', 'forEach', 'indexOf', 'join', 'keys', 'lastIndexOf', 'length', 'map', 'pop', 'push', 'reduce', 'reduceRight', 'reverse', 'shift', 'slice', 'some', 'sort', 'splice', 'toLocaleString', 'toString', 'unshift', 'values']",
+    "Array.prototype": "['concat', 'constructor', 'entries', 'every', 'filter', 'forEach', 'indexOf', 'join', 'keys', 'lastIndexOf', 'length', 'map', 'pop', 'push', 'reduce', 'reduceRight', 'reverse', 'shift', 'slice', 'some', 'sort', 'splice', 'toLocaleString', 'toString', 'unshift']",
     "String": "['fromCharCode', 'length', 'name', 'prototype']",
     "String.prototype": "['anchor', 'big', 'blink', 'bold', 'charAt', 'charCodeAt', 'concat', 'constructor', 'fixed', 'fontcolor', 'fontsize', 'indexOf', 'italics', 'lastIndexOf', 'length', 'link', 'localeCompare', 'match', 'replace', 'search', 'slice', 'small', 'split', 'strike', 'sub', 'substr', 'substring', 'sup', 'toLocaleLowerCase', 'toLocaleUpperCase', 'toLowerCase', 'toString', 'toUpperCase', 'trim', 'trimLeft', 'trimRight', 'valueOf']",
     "Boolean": "['length', 'name', 'prototype']",

Modified: trunk/LayoutTests/js/script-tests/array-iterators.js (159062 => 159063)


--- trunk/LayoutTests/js/script-tests/array-iterators.js	2013-11-11 20:17:49 UTC (rev 159062)
+++ trunk/LayoutTests/js/script-tests/array-iterators.js	2013-11-11 20:53:13 UTC (rev 159063)
@@ -2,6 +2,7 @@
 "This test checks the behavior of the iterator methods on Array objects."
 );
 
+shouldBeFalse("'values' in []");
 
 var testArray = [1,2,3,4,5,6]
 var keys = testArray.keys();
@@ -13,15 +14,6 @@
 
 shouldBe("testArray.length", String(i))
 
-var values = testArray.values();
-var i = 0;
-for (var value of values) {
-    i++;
-    shouldBe("value", String(i) )
-}
-
-shouldBe("testArray.length", String(i))
-
 var entries = testArray.entries();
 var i = 0;
 for (var [key, value] of entries) {

Modified: trunk/LayoutTests/js/script-tests/basic-for-of.js (159062 => 159063)


--- trunk/LayoutTests/js/script-tests/basic-for-of.js	2013-11-11 20:17:49 UTC (rev 159062)
+++ trunk/LayoutTests/js/script-tests/basic-for-of.js	2013-11-11 20:53:13 UTC (rev 159063)
@@ -6,12 +6,6 @@
 var testArray = [1,2,3,4,5,6]
 
 var i = 0;
-for (var value of testArray.values())
-    shouldBe("value", "testArray[" + i++ + "]")
-
-shouldBe("testArray.length", String(i))
-
-var i = 0;
 for (var value of testArray)
     shouldBe("value", "testArray[" + i++ + "]")
 

Modified: trunk/Source/_javascript_Core/ChangeLog (159062 => 159063)


--- trunk/Source/_javascript_Core/ChangeLog	2013-11-11 20:17:49 UTC (rev 159062)
+++ trunk/Source/_javascript_Core/ChangeLog	2013-11-11 20:53:13 UTC (rev 159063)
@@ -1,3 +1,17 @@
+2013-11-11  Oliver Hunt  <[email protected]>
+
+        ExtJS breaks with modern Array.prototype.values API due to use of with()
+        https://bugs.webkit.org/show_bug.cgi?id=123440
+
+        Reviewed by Beth Dakin.
+
+        As with our attempt to make Arguments use the Array prototype, ExtJS has
+        a weird dependency on not adding new APIs to core types.  In this case
+        Array.prototype.values.  The fix is to remove it, and push for ES6 to drop
+        the API.
+
+        * runtime/ArrayPrototype.cpp:
+
 2013-11-11  Gabor Rapcsanyi  <[email protected]>
 
         Fix CPU(ARM_TRADITIONAL) build after r159039.

Modified: trunk/Source/_javascript_Core/runtime/ArrayPrototype.cpp (159062 => 159063)


--- trunk/Source/_javascript_Core/runtime/ArrayPrototype.cpp	2013-11-11 20:17:49 UTC (rev 159062)
+++ trunk/Source/_javascript_Core/runtime/ArrayPrototype.cpp	2013-11-11 20:53:13 UTC (rev 159063)
@@ -116,7 +116,6 @@
   reduce         arrayProtoFuncReduce         DontEnum|Function 1
   reduceRight    arrayProtoFuncReduceRight    DontEnum|Function 1
   map            arrayProtoFuncMap            DontEnum|Function 1
-  values         arrayProtoFuncValues         DontEnum|Function 0
   entries        arrayProtoFuncEntries        DontEnum|Function 0
   keys           arrayProtoFuncKeys           DontEnum|Function 0
 @end
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to