• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright JS Foundation and other contributors, http://js.foundation
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15/* 1 */
16
17a: a = 1;
18
19str = '';
20
21a: for (j = 0; j < 10; j++)
22{
23  str += 'A';
24
25  b: for (i = 0; i < 10; i++)
26  {
27    str += 'B';
28
29    break a;
30
31    str += 'C';
32  }
33
34  str += 'D';
35}
36
37assert (str === 'AB');
38
39/* 2 */
40str = '';
41
42a: for (j = 0; j < 5; j++)
43{
44  str += 'A';
45
46  b: for (i = 0; i < 5; i++)
47  {
48    str += 'B';
49
50    switch (1)
51    {
52      case 1:
53        continue b;
54      default:
55        break b;
56    }
57
58    str += 'C';
59  }
60
61  str += 'D';
62}
63
64assert (str === 'ABBBBBDABBBBBDABBBBBDABBBBBDABBBBBD');
65
66/* 3 */
67str = '';
68
69a: for (j = 0; j < 5; j++)
70{
71  str += 'A';
72
73  b: for (i = 0; i < 5; i++)
74  {
75    str += 'B';
76
77    switch (1)
78    {
79      case 1:
80        continue a;
81    }
82
83    str += 'C';
84  }
85
86  str += 'D';
87}
88
89assert (str === 'ABABABABAB');
90
91/* 4 */
92str = '';
93
94a: for (j = 0; j < 5; j++)
95{
96  str += 'A';
97
98  b: for (i = 0; i < 5; i++)
99  {
100    str += 'B';
101
102    switch (1)
103    {
104      case 1:
105        break b;
106    }
107
108    str += 'C';
109  }
110
111  str += 'D';
112}
113
114assert (str === 'ABDABDABDABDABD');
115
116/* 5 */
117str = '';
118
119a: for (j = 0; j < 5; j++)
120{
121  str += 'A';
122
123  b: for (i = 0; i < 5; i++)
124  {
125    str += 'B';
126
127    switch (1)
128    {
129      case 1:
130        break a;
131    }
132
133    str += 'C';
134  }
135
136  str += 'D';
137}
138
139assert (str === 'AB');
140
141
142/* 6 */
143str = '';
144
145a: for (j = 0; j < 5; j++)
146{
147  str += 'A';
148
149  b: for (i = 0; i < 5; i++)
150  {
151    str += 'B';
152
153    with ({})
154    {
155      break b;
156    }
157
158    str += 'C';
159  }
160
161  str += 'D';
162}
163
164assert (str === 'ABDABDABDABDABD');
165
166/* 7 */
167str = '';
168
169a: for (j = 0; j < 5; j++)
170{
171  c:
172  {
173    str += 'A';
174
175    b: for (i = 0; i < 5; i++)
176    {
177      str += 'B';
178
179      with ({})
180      {
181        break c;
182      }
183
184      str += 'C';
185    }
186
187    str += 'D';
188  }
189}
190
191assert (str === 'ABABABABAB');
192
193/* 8 */
194
195a: {
196 function f ()
197 {
198      str = '';
199
200   a: for (i = 0; i < 5; i++)
201      {
202        str += 'A';
203
204        for (j = 0; j < 5; j++)
205        {
206          str += 'B';
207
208          continue a;
209
210          str += 'C';
211        }
212        str += 'D';
213      }
214
215    assert (str === 'ABABABABAB');
216 }
217}
218
219f ();
220
221/* 9 */
222
223str = '';
224
225for (i = 0; i < 5; i++)
226{
227  str += 'A';
228
229  switch (i)
230  {
231    case 0:
232    {
233      str += '0';
234      break;
235    }
236    case 1:
237    {
238      str += '1';
239      break;
240    }
241    case 2:
242    {
243      str += '2';
244      break;
245    }
246    case 3:
247    {
248      str += '3';
249      break;
250    }
251    case 4:
252    {
253      str += '4';
254      break;
255    }
256  }
257
258  str += 'B';
259}
260
261assert (str === 'A0BA1BA2BA3BA4B');
262
263/* 10 */
264
265str = '';
266
267for (i = 0; i < 2; i++)
268{
269  str += '[A]';
270
271  a:
272  for (j = 0; j < 5; j++)
273  {
274    str += '[B]';
275
276    switch (j)
277    {
278      case 0:
279      {
280        str += '[0]';
281        break;
282      }
283      case 1:
284      {
285        str += '[1]';
286        if (i % 2 == 0)
287        {
288          str += '[1.1]';
289          break a;
290        }
291        else
292        {
293          str += '[1.2]';
294        }
295      }
296      case 2:
297      {
298        str += '[2]';
299        continue a;
300      }
301      case 3:
302      {
303        str += '[3]';
304        break;
305      }
306      case 4:
307      {
308        str += '[4]';
309        continue a;
310      }
311    }
312
313    str += '[C]';
314  }
315
316  str += '[D]';
317}
318
319assert (str === '[A][B][0][C][B][1][1.1][D]' +
320                '[A][B][0][C][B][1][1.2][2][B][2][B][3][C][B][4][D]');
321