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

Side by Side Diff: test/mjsunit/regress/redeclaration-error-types.js

Issue 2048703002: change most cases of variable redeclaration from TypeError to SyntaxError (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: rebase Created 4 years, 6 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 | « test/mjsunit/es6/block-eval-var-over-let.js ('k') | test/test262/test262.status » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5
6 function doTest(scripts, expectedError) {
7 var realm = Realm.create();
8
9 for (var i = 0; i < scripts.length - 1; i++) {
10 Realm.eval(realm, scripts[i]);
11 }
12 assertThrows(function() {
13 Realm.eval(realm, scripts[scripts.length - 1]);
14 }, Realm.eval(realm, expectedError));
15
16 Realm.dispose(realm);
17 }
18
19 var tests = [
20 {
21 // ES#sec-globaldeclarationinstantiation 5.a:
22 // If envRec.HasVarDeclaration(name) is true, throw a SyntaxError
23 // exception.
24 scripts: [
25 "var a;",
26 "let a;",
27 ],
28 expectedError: "SyntaxError",
29 },
30 {
31 // ES#sec-globaldeclarationinstantiation 6.a:
32 // If envRec.HasLexicalDeclaration(name) is true, throw a SyntaxError
33 // exception.
34 scripts: [
35 "let a;",
36 "var a;",
37 ],
38 expectedError: "SyntaxError",
39 },
40 {
41 // ES#sec-globaldeclarationinstantiation 5.b:
42 // If envRec.HasLexicalDeclaration(name) is true, throw a SyntaxError
43 // exception.
44 scripts: [
45 "let a;",
46 "let a;",
47 ],
48 expectedError: "SyntaxError",
49 },
50 {
51 // ES#sec-evaldeclarationinstantiation 5.a.i.1:
52 // If varEnvRec.HasLexicalDeclaration(name) is true, throw a SyntaxError
53 // exception.
54 scripts: [
55 'let a; eval("var a;");',
56 ],
57 expectedError: "SyntaxError",
58 },
59 {
60 // ES#sec-evaldeclarationinstantiation 5.a.i.1:
61 // If varEnvRec.HasLexicalDeclaration(name) is true, throw a SyntaxError
62 // exception.
63 scripts: [
64 'let a; eval("function a() {}");',
65 ],
66 expectedError: "SyntaxError",
67 },
68 {
69 // ES#sec-evaldeclarationinstantiation 5.d.ii.2.a.i:
70 // Throw a SyntaxError exception.
71 scripts: [
72 '(function() { let a; eval("var a;"); })();',
73 ],
74 expectedError: "SyntaxError",
75 },
76 {
77 // ES#sec-evaldeclarationinstantiation 5.d.ii.2.a.i:
78 // Throw a SyntaxError exception.
79 scripts: [
80 '(function() { let a; eval("function a() {}"); })();',
81 ],
82 expectedError: "SyntaxError",
83 },
84 {
85 // ES#sec-globaldeclarationinstantiation 5.d:
86 // If hasRestrictedGlobal is true, throw a SyntaxError exception.
87 scripts: [
88 'let NaN;',
89 ],
90 expectedError: "SyntaxError",
91 },
92 {
93 // ES#sec-globaldeclarationinstantiation 5.d:
94 // If hasRestrictedGlobal is true, throw a SyntaxError exception.
95 scripts: [
96 'function NaN() {}',
97 ],
98 expectedError: "SyntaxError",
99 },
100
101 {
102 // ES#sec-evaldeclarationinstantiation 8.a.iv.1.b:
103 // If fnDefinable is false, throw a TypeError exception.
104 scripts: [
105 'eval("function NaN() {}");',
106 ],
107 expectedError: "TypeError",
108 },
109 {
110 // ES#sec-evaldeclarationinstantiation 8.a.iv.1.b:
111 // If fnDefinable is false, throw a TypeError exception.
112 scripts: [
113 `
114 let a;
115 try {
116 eval("function a() {}");
117 } catch (e) {}
118 eval("function NaN() {}");
119 `,
120 ],
121 expectedError: "TypeError",
122 },
123 {
124 // ES#sec-evaldeclarationinstantiation 8.a.iv.1.b:
125 // If fnDefinable is false, throw a TypeError exception.
126 scripts: [
127 `
128 eval("
129 function f() {
130 function b() {
131 (0, eval)('function NaN() {}');
132 }
133 b();
134 }
135 f();
136 ");
137 `.replace(/"/g, '`'),
138 ],
139 expectedError: "TypeError",
140 },
141 ];
142
143 tests.forEach(function(test) {
144 doTest(test.scripts, test.expectedError);
145 });
OLDNEW
« no previous file with comments | « test/mjsunit/es6/block-eval-var-over-let.js ('k') | test/test262/test262.status » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698