blob: 3809b322899857ee38d1a8280996de67decce317 [file] [log] [blame]
utatane.tea@gmail.comf2fde6a2015-11-02 05:46:17 +00001function testSyntax(script) {
2 try {
3 eval(script);
4 } catch (error) {
5 if (error instanceof SyntaxError)
6 throw new Error("Bad error: " + String(error));
7 }
8}
9
10function testSyntaxError(script, message) {
11 var error = null;
12 try {
13 eval(script);
14 } catch (e) {
15 error = e;
16 }
17 if (!error)
18 throw new Error("Expected syntax error not thrown");
19
20 if (String(error) !== message)
21 throw new Error("Bad error: " + String(error));
22}
23
24testSyntax(`
25function t1() {
26 var yield = 20;
27}
28`);
29testSyntax(`
30function t1() {
31 let yield = 20;
32}
33`);
34testSyntax(`
35function t1() {
36 const yield = 20;
37}
38`);
39
40testSyntaxError(`
41function t1() {
42 "use strict";
43 var yield = 20;
44}
commit-queue@webkit.org0068bf72017-04-24 16:06:33 +000045`, `SyntaxError: Cannot use 'yield' as a variable name in strict mode.`);
utatane.tea@gmail.comf2fde6a2015-11-02 05:46:17 +000046testSyntaxError(`
47function t1() {
48 "use strict";
49 let yield = 20;
50}
commit-queue@webkit.org0068bf72017-04-24 16:06:33 +000051`, `SyntaxError: Cannot use 'yield' as a lexical variable name in strict mode.`);
utatane.tea@gmail.comf2fde6a2015-11-02 05:46:17 +000052testSyntaxError(`
53function t1() {
54 "use strict";
55 const yield = 20;
56}
commit-queue@webkit.org0068bf72017-04-24 16:06:33 +000057`, `SyntaxError: Cannot use 'yield' as a lexical variable name in strict mode.`);
utatane.tea@gmail.comf2fde6a2015-11-02 05:46:17 +000058
59testSyntax(`
60function t1() {
61 var { yield } = 20;
62}
63`);
64testSyntax(`
65function t1() {
66 let { yield } = 20;
67}
68`);
69testSyntax(`
70function t1() {
71 const { yield } = 20;
72}
73`);
74
75testSyntaxError(`
76function t1() {
77 "use strict";
78 var { yield } = 20;
79}
80`, `SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'yield'.`);
81testSyntaxError(`
82function t1() {
83 "use strict";
84 let { yield } = 20;
85}
86`, `SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'yield'.`);
87testSyntaxError(`
88function t1() {
89 "use strict";
90 const { yield } = 20;
91}
92`, `SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'yield'.`);
93
94testSyntax(`
95function t1() {
96 var { i: yield } = 20;
97}
98`);
99testSyntax(`
100function t1() {
101 let { i: yield } = 20;
102}
103`);
104testSyntax(`
105function t1() {
106 const { i: yield } = 20;
107}
108`);
109
110testSyntaxError(`
111function t1() {
112 "use strict";
113 var { i: yield } = 20;
114}
commit-queue@webkit.org0068bf72017-04-24 16:06:33 +0000115`, `SyntaxError: Cannot use 'yield' as a variable name in strict mode.`);
utatane.tea@gmail.comf2fde6a2015-11-02 05:46:17 +0000116testSyntaxError(`
117function t1() {
118 "use strict";
119 let { i: yield } = 20;
120}
commit-queue@webkit.org0068bf72017-04-24 16:06:33 +0000121`, `SyntaxError: Cannot use 'yield' as a lexical variable name in strict mode.`);
utatane.tea@gmail.comf2fde6a2015-11-02 05:46:17 +0000122testSyntaxError(`
123function t1() {
124 "use strict";
125 const { i: yield } = 20;
126}
commit-queue@webkit.org0068bf72017-04-24 16:06:33 +0000127`, `SyntaxError: Cannot use 'yield' as a lexical variable name in strict mode.`);
utatane.tea@gmail.comf2fde6a2015-11-02 05:46:17 +0000128
129testSyntax(`
130function t1() {
131 var [ yield ] = 20;
132}
133`);
134testSyntax(`
135function t1() {
136 let [ yield ] = 20;
137}
138`);
139testSyntax(`
140function t1() {
141 const [ yield ] = 20;
142}
143`);
144
145testSyntaxError(`
146function t1() {
147 "use strict";
148 var [ yield ] = 20;
149}
commit-queue@webkit.org0068bf72017-04-24 16:06:33 +0000150`, `SyntaxError: Cannot use 'yield' as a variable name in strict mode.`);
utatane.tea@gmail.comf2fde6a2015-11-02 05:46:17 +0000151testSyntaxError(`
152function t1() {
153 "use strict";
154 let [ yield ] = 20;
155}
commit-queue@webkit.org0068bf72017-04-24 16:06:33 +0000156`, `SyntaxError: Cannot use 'yield' as a lexical variable name in strict mode.`);
utatane.tea@gmail.comf2fde6a2015-11-02 05:46:17 +0000157testSyntaxError(`
158function t1() {
159 "use strict";
160 const [ yield ] = 20;
161}
commit-queue@webkit.org0068bf72017-04-24 16:06:33 +0000162`, `SyntaxError: Cannot use 'yield' as a lexical variable name in strict mode.`);
utatane.tea@gmail.comf2fde6a2015-11-02 05:46:17 +0000163
164testSyntax(`
165function t1() {
166 function yield() { }
167}
168`);
169testSyntaxError(`
170function t1() {
171 "use strict";
172 function yield() { }
173}
commit-queue@webkit.org0068bf72017-04-24 16:06:33 +0000174`, `SyntaxError: Cannot use 'yield' as a function name in strict mode.`);
utatane.tea@gmail.comf2fde6a2015-11-02 05:46:17 +0000175
176testSyntax(`
177function t1() {
178 try {
179 } catch (yield) {
180 }
181}
182`);
183testSyntaxError(`
184function t1() {
185 "use strict";
186 try {
187 } catch (yield) {
188 }
189}
commit-queue@webkit.org0068bf72017-04-24 16:06:33 +0000190`, `SyntaxError: Cannot use 'yield' as a catch parameter name in strict mode.`);
utatane.tea@gmail.comf2fde6a2015-11-02 05:46:17 +0000191
192testSyntax(`
193function t1() {
194 function yield() {
195 "use strict";
196 }
197}
198`);