Title: [172381] trunk
Revision
172381
Author
oli...@apple.com
Date
2014-08-10 13:12:01 -0700 (Sun, 10 Aug 2014)

Log Message

Destructuring assignment in a var declaration list incorrectly consumes subsequent variable initialisers
https://bugs.webkit.org/show_bug.cgi?id=135773

Reviewed by Michael Saboff.

Source/_javascript_Core:

We should be using parseAssignment _expression_ in order to get the correct
precedence.

* parser/Parser.cpp:
(JSC::Parser<LexerType>::parseVarDeclarationList):

LayoutTests:

Add new tests.

* js/destructuring-assignment-expected.txt:
* js/script-tests/destructuring-assignment.js:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (172380 => 172381)


--- trunk/LayoutTests/ChangeLog	2014-08-10 20:07:34 UTC (rev 172380)
+++ trunk/LayoutTests/ChangeLog	2014-08-10 20:12:01 UTC (rev 172381)
@@ -1,3 +1,15 @@
+2014-08-10  Oliver Hunt  <oli...@apple.com>
+
+        Destructuring assignment in a var declaration list incorrectly consumes subsequent variable initialisers
+        https://bugs.webkit.org/show_bug.cgi?id=135773
+
+        Reviewed by Michael Saboff.
+
+        Add new tests.
+
+        * js/destructuring-assignment-expected.txt:
+        * js/script-tests/destructuring-assignment.js:
+
 2014-08-09  Zalan Bujtas  <za...@apple.com>
 
         Subpixel rendering: Transforms on non-compositing layers leave bits behind when the box boundaries changes.

Modified: trunk/LayoutTests/js/destructuring-assignment-expected.txt (172380 => 172381)


--- trunk/LayoutTests/js/destructuring-assignment-expected.txt	2014-08-10 20:07:34 UTC (rev 172380)
+++ trunk/LayoutTests/js/destructuring-assignment-expected.txt	2014-08-10 20:12:01 UTC (rev 172381)
@@ -81,6 +81,10 @@
 PASS testDeconstructArgs('1', '2') is '12'
 PASS testDeconstructArgLength('1', '2') is 2
 PASS testDeconstructArgs('2') is '23'
+PASS a is 1
+PASS b is 2
+PASS c is 3
+PASS d is 4
 PASS successfullyParsed is true
 
 TEST COMPLETE

Modified: trunk/LayoutTests/js/script-tests/destructuring-assignment.js (172380 => 172381)


--- trunk/LayoutTests/js/script-tests/destructuring-assignment.js	2014-08-10 20:07:34 UTC (rev 172380)
+++ trunk/LayoutTests/js/script-tests/destructuring-assignment.js	2014-08-10 20:12:01 UTC (rev 172381)
@@ -50,6 +50,11 @@
 Object.prototype.__defineGetter__(1, function(){ var r = text; text = "fail"; return r; })
 shouldBe("testDeconstructArgs('2')", "'23'");
 
+var [a,b] = [1,2], [c,d] = [3,4]
 
+shouldBe("a", "1")
+shouldBe("b", "2")
+shouldBe("c", "3")
+shouldBe("d", "4")
 
 

Modified: trunk/Source/_javascript_Core/ChangeLog (172380 => 172381)


--- trunk/Source/_javascript_Core/ChangeLog	2014-08-10 20:07:34 UTC (rev 172380)
+++ trunk/Source/_javascript_Core/ChangeLog	2014-08-10 20:12:01 UTC (rev 172381)
@@ -1,3 +1,16 @@
+2014-08-10  Oliver Hunt  <oli...@apple.com>
+
+        Destructuring assignment in a var declaration list incorrectly consumes subsequent variable initialisers
+        https://bugs.webkit.org/show_bug.cgi?id=135773
+
+        Reviewed by Michael Saboff.
+
+        We should be using parseAssignment _expression_ in order to get the correct
+        precedence.
+
+        * parser/Parser.cpp:
+        (JSC::Parser<LexerType>::parseVarDeclarationList):
+
 2014-08-10  Diego Pino Garcia  <dp...@igalia.com>
 
         JSC Lexer is allowing octals 08 and 09 in strict mode functions

Modified: trunk/Source/_javascript_Core/parser/Parser.cpp (172380 => 172381)


--- trunk/Source/_javascript_Core/parser/Parser.cpp	2014-08-10 20:07:34 UTC (rev 172380)
+++ trunk/Source/_javascript_Core/parser/Parser.cpp	2014-08-10 20:12:01 UTC (rev 172381)
@@ -484,7 +484,7 @@
             lastPattern = pattern;
             if (hasInitializer) {
                 next(TreeBuilder::DontBuildStrings); // consume '='
-                TreeExpression rhs = parseExpression(context);
+                TreeExpression rhs = parseAssignmentExpression(context);
                 node = context.createDeconstructingAssignment(location, pattern, rhs);
                 lastInitializer = rhs;
             }
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to