Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(158)

Side by Side Diff: test/mjsunit/regress/regress-4693.js

Issue 1633743003: Add UseCounters for some nonstandard JavaScript features (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Rebase and reflow comment Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/parsing/parser.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 the V8 project authors. All rights reserved. 1 // Copyright 2016 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 // 4 //
5 // Flags: --harmony-sloppy-function 5 // Flags: --harmony-sloppy-function --nolegacy-const
6 6
7 // In sloppy mode we allow function redeclarations within blocks for webcompat. 7 // In sloppy mode we allow function redeclarations within blocks for webcompat.
8 (function() { 8 (function() {
9 assertEquals(undefined, f); // Annex B 9 assertEquals(undefined, f); // Annex B
10 if (true) { 10 if (true) {
11 assertEquals(2, f()); 11 assertEquals(2, f());
12 function f() { return 1 } 12 function f() { return 1 }
13 assertEquals(2, f()); 13 assertEquals(2, f());
14 function f() { return 2 } 14 function f() { return 2 }
15 assertEquals(2, f()); 15 assertEquals(2, f());
16 } 16 }
17 assertEquals(2, f()); // Annex B 17 assertEquals(2, f()); // Annex B
18 })(); 18 })();
19 19
20 // Should still fail in strict mode 20 // Should still fail in strict mode
21 assertThrows(` 21 assertThrows(`
22 (function() { 22 (function() {
23 "use strict"; 23 "use strict";
24 if (true) { 24 if (true) {
25 function f() { return 1 } 25 function f() { return 1 }
26 function f() { return 2 } 26 function f() { return 2 }
27 } 27 }
28 })(); 28 })();
29 `, SyntaxError); 29 `, SyntaxError);
30
31 // Conflicts between let and function still throw
32 assertThrows(`
33 (function() {
34 if (true) {
35 let f;
36 function f() { return 2 }
37 }
38 })();
39 `, SyntaxError);
40
41 assertThrows(`
42 (function() {
43 if (true) {
44 function f() { return 2 }
45 let f;
46 }
47 })();
48 `, SyntaxError);
49
50 // Conflicts between const and function still throw
51 assertThrows(`
52 (function() {
53 if (true) {
54 const f;
55 function f() { return 2 }
56 }
57 })();
58 `, SyntaxError);
59
60 assertThrows(`
61 (function() {
62 if (true) {
63 function f() { return 2 }
64 const f;
65 }
66 })();
67 `, SyntaxError);
68
69 // Annex B redefinition semantics still apply with more blocks
70 (function() {
71 assertEquals(undefined, f); // Annex B
72 if (true) {
73 assertEquals(undefined, f);
74 { function f() { return 1 } }
75 assertEquals(1, f());
76 { function f() { return 2 } }
77 assertEquals(2, f());
78 }
79 assertEquals(2, f()); // Annex B
80 })();
OLDNEW
« no previous file with comments | « src/parsing/parser.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698