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