Changeset 198928 in webkit
- Timestamp:
- Mar 31, 2016 4:07:39 PM (8 years ago)
- Location:
- trunk
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r198927 r198928 1 2016-03-31 Saam barati <sbarati@apple.com> 2 3 [ES6] Disallow var assignments in for-in loops 4 https://bugs.webkit.org/show_bug.cgi?id=155451 5 6 Reviewed by Mark Lam. 7 8 * js/parser-syntax-check-expected.txt: 9 * js/script-tests/parser-syntax-check.js: 10 1 11 2016-03-31 Saam barati <sbarati@apple.com> 2 12 -
trunk/LayoutTests/js/parser-syntax-check-expected.txt
r198927 r198928 505 505 PASS Valid: "for (var a in b in c) break" with ReferenceError 506 506 PASS Valid: "function f() { for (var a in b in c) break }" 507 PASS Valid: "for (var a = 5 += 6 in b) break" with ReferenceError508 PASS Valid:"function f() { for (var a = 5 += 6 in b) break }"509 PASS Valid: "for (var a = debug('should not be hit') in b) break" with ReferenceError510 PASS Valid:"function f() { for (var a = debug('should not be hit') in b) break }"507 PASS Invalid: "for (var a = 5 += 6 in b) break" 508 PASS Invalid: "function f() { for (var a = 5 += 6 in b) break }" 509 PASS Invalid: "for (var a = debug('should not be hit') in b) break" 510 PASS Invalid: "function f() { for (var a = debug('should not be hit') in b) break }" 511 511 PASS Invalid: "for (var a += 5 in b) break" 512 512 PASS Invalid: "function f() { for (var a += 5 in b) break }" … … 519 519 PASS Invalid: "for (var a, b = 8 in b) break" 520 520 PASS Invalid: "function f() { for (var a, b = 8 in b) break }" 521 PASS Valid: "for (var a = (b in c) in d) break" with ReferenceError522 PASS Valid:"function f() { for (var a = (b in c) in d) break }"521 PASS Invalid: "for (var a = (b in c) in d) break" 522 PASS Invalid: "function f() { for (var a = (b in c) in d) break }" 523 523 PASS Invalid: "for (var a = (b in c in d) break" 524 524 PASS Invalid: "function f() { for (var a = (b in c in d) break }" … … 533 533 PASS Invalid: "for (var {a} = 20 in b) { }" 534 534 PASS Invalid: "function f() { for (var {a} = 20 in b) { } }" 535 PASS Valid: "for (var i = 20 in b) { }" with ReferenceError536 PASS Valid:"function f() { for (var i = 20 in b) { } }"535 PASS Invalid: "for (var i = 20 in b) { }" 536 PASS Invalid: "function f() { for (var i = 20 in b) { } }" 537 537 PASS Invalid: "for (var i = 20 of b) { }" 538 538 PASS Invalid: "function f() { for (var i = 20 of b) { } }" -
trunk/LayoutTests/js/script-tests/parser-syntax-check.js
r198927 r198928 334 334 valid ("for ((a ? b : c) in c) break"); 335 335 valid ("for (var a in b in c) break"); 336 valid("for (var a = 5 += 6 in b) break");337 valid("for (var a = debug('should not be hit') in b) break");336 invalid("for (var a = 5 += 6 in b) break"); 337 invalid("for (var a = debug('should not be hit') in b) break"); 338 338 invalid("for (var a += 5 in b) break"); 339 339 invalid("for (var a = in b) break"); … … 341 341 invalid("for (var a = -6, b in b) break"); 342 342 invalid("for (var a, b = 8 in b) break"); 343 valid("for (var a = (b in c) in d) break");343 invalid("for (var a = (b in c) in d) break"); 344 344 invalid("for (var a = (b in c in d) break"); 345 345 invalid("for (var (a) in b) { }"); … … 348 348 invalid("for (var {a} = 20 of b) { }"); 349 349 invalid("for (var {a} = 20 in b) { }"); 350 valid("for (var i = 20 in b) { }");350 invalid("for (var i = 20 in b) { }"); 351 351 invalid("for (var i = 20 of b) { }"); 352 352 invalid("for (var {i} = 20 of b) { }"); -
trunk/Source/JavaScriptCore/ChangeLog
r198927 r198928 1 2016-03-31 Saam barati <sbarati@apple.com> 2 3 [ES6] Disallow var assignments in for-in loops 4 https://bugs.webkit.org/show_bug.cgi?id=155451 5 6 Reviewed by Mark Lam. 7 8 We're doing this in its own patch instead of the patch for https://bugs.webkit.org/show_bug.cgi?id=155384 9 because last time we made this change it broke some websites. Lets try making 10 it again because it's what the ES6 mandates. If it still breaks things we will 11 roll it out. 12 13 * parser/Parser.cpp: 14 (JSC::Parser<LexerType>::parseForStatement): 15 1 16 2016-03-31 Saam barati <sbarati@apple.com> 2 17 -
trunk/Source/JavaScriptCore/parser/Parser.cpp
r198927 r198928 1169 1169 if (isOfEnumeration) 1170 1170 internalFailWithMessage(false, "Cannot assign to the loop variable inside a for-of loop header"); 1171 if (strictMode() || (isLetDeclaration || isConstDeclaration) || !context.isBindingNode(forInTarget)) 1172 internalFailWithMessage(false, "Cannot assign to the loop variable inside a for-in loop header"); 1171 internalFailWithMessage(false, "Cannot assign to the loop variable inside a for-in loop header"); 1173 1172 } 1174 1173 TreeExpression expr = parseExpression(context);
Note: See TracChangeset
for help on using the changeset viewer.