blob: 64200c747307b30885aa14d2b3661baf8584d62c [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
caitp@igalia.comfe92fc72016-08-04 02:36:28 +000024testSyntax(`
utatane.tea@gmail.comf2fde6a2015-11-02 05:46:17 +000025yield;
caitp@igalia.comfe92fc72016-08-04 02:36:28 +000026`);
utatane.tea@gmail.comf2fde6a2015-11-02 05:46:17 +000027
28testSyntaxError(`
29yield*;
caitp@igalia.comfe92fc72016-08-04 02:36:28 +000030`, "SyntaxError: Unexpected token ';'");
utatane.tea@gmail.comf2fde6a2015-11-02 05:46:17 +000031
32testSyntaxError(`
33yield 0;
caitp@igalia.comfe92fc72016-08-04 02:36:28 +000034`, "SyntaxError: Unexpected number '0'");
utatane.tea@gmail.comf2fde6a2015-11-02 05:46:17 +000035
caitp@igalia.comfe92fc72016-08-04 02:36:28 +000036testSyntax(`
utatane.tea@gmail.comf2fde6a2015-11-02 05:46:17 +000037yield* 0;
caitp@igalia.comfe92fc72016-08-04 02:36:28 +000038`);
utatane.tea@gmail.comf2fde6a2015-11-02 05:46:17 +000039
caitp@igalia.comfe92fc72016-08-04 02:36:28 +000040testSyntax(`
utatane.tea@gmail.comf2fde6a2015-11-02 05:46:17 +000041function hello() {
42 yield;
43}
caitp@igalia.comfe92fc72016-08-04 02:36:28 +000044`);
utatane.tea@gmail.comf2fde6a2015-11-02 05:46:17 +000045
46testSyntaxError(`
47function hello() {
48 yield*;
49}
caitp@igalia.comfe92fc72016-08-04 02:36:28 +000050`, "SyntaxError: Unexpected token ';'");
utatane.tea@gmail.comf2fde6a2015-11-02 05:46:17 +000051
52testSyntaxError(`
53function hello() {
54 yield 0;
55}
caitp@igalia.comfe92fc72016-08-04 02:36:28 +000056`, "SyntaxError: Unexpected number '0'");
utatane.tea@gmail.comf2fde6a2015-11-02 05:46:17 +000057
caitp@igalia.comfe92fc72016-08-04 02:36:28 +000058testSyntax(`
utatane.tea@gmail.comf2fde6a2015-11-02 05:46:17 +000059function hello() {
60 yield* 0;
61}
caitp@igalia.comfe92fc72016-08-04 02:36:28 +000062`);
utatane.tea@gmail.comf2fde6a2015-11-02 05:46:17 +000063
caitp@igalia.comfe92fc72016-08-04 02:36:28 +000064testSyntax(`
utatane.tea@gmail.comf2fde6a2015-11-02 05:46:17 +000065function *gen() {
66 function hello() {
67 yield;
68 }
69}
caitp@igalia.comfe92fc72016-08-04 02:36:28 +000070`);
utatane.tea@gmail.comf2fde6a2015-11-02 05:46:17 +000071
72testSyntaxError(`
73function *gen() {
74 function hello() {
75 yield*;
76 }
77}
caitp@igalia.comfe92fc72016-08-04 02:36:28 +000078`, "SyntaxError: Unexpected token ';'");
utatane.tea@gmail.comf2fde6a2015-11-02 05:46:17 +000079
80testSyntaxError(`
81function *gen() {
82 function hello() {
83 yield 0;
84 }
85}
caitp@igalia.comfe92fc72016-08-04 02:36:28 +000086`, "SyntaxError: Unexpected number '0'");
utatane.tea@gmail.comf2fde6a2015-11-02 05:46:17 +000087
caitp@igalia.comfe92fc72016-08-04 02:36:28 +000088testSyntax(`
utatane.tea@gmail.comf2fde6a2015-11-02 05:46:17 +000089function *gen() {
90 function hello() {
91 yield* 0;
92 }
93}
caitp@igalia.comfe92fc72016-08-04 02:36:28 +000094`);
utatane.tea@gmail.comf2fde6a2015-11-02 05:46:17 +000095
96testSyntax(`
97function *gen() {
98 yield;
99}
100`);
101
102testSyntaxError(`
103function *gen() {
104 yield*;
105}
106`, "SyntaxError: Unexpected token '*'");
107
108testSyntax(`
109function *gen() {
110 yield 0;
111}
112`);
113
114testSyntax(`
115function *gen() {
116 yield* 0;
117}
118`);
119
120testSyntax(`
121function *gen() {
122 {
123 let i = 30;
124 function ok() {
125 return i;
126 }
127 yield;
128 }
129}
130`);
131
132testSyntaxError(`
133function *gen() {
134 {
135 let i = 30;
136 function ok() {
137 return i;
138 }
139 yield*;
140 }
141}
142`, "SyntaxError: Unexpected token '*'");
143
144testSyntax(`
145function *gen() {
146 {
147 let i = 30;
148 function ok() {
149 return i;
150 }
151 yield 0;
152 }
153}
154`);
155
156testSyntax(`
157function *gen() {
158 {
159 let i = 30;
160 function ok() {
161 return i;
162 }
163 yield* 0;
164 }
165}
166`);