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