OLD | NEW |
---|---|
(Empty) | |
1 Checks possible break locations. | |
2 | |
3 Running test: testEval | |
4 break at: | |
5 function testEval() { | |
6 #eval('// comment only'); | |
7 eval('// comment only\n'); | |
8 | |
9 break at: | |
10 // comment onl#y | |
11 | |
12 break at: | |
13 eval('// comment only'); | |
14 #eval('// comment only\n'); | |
15 } | |
16 | |
17 break at: | |
18 // comment only# | |
19 | |
20 | |
21 break at: | |
22 eval('// comment only\n'); | |
23 #} | |
24 | |
25 | |
26 | |
27 Running test: testProcedure | |
28 break at: | |
29 function testProcedure() { | |
30 #procedure(); | |
31 } | |
32 | |
33 break at: | |
34 function procedure() { | |
35 var a = #1; | |
36 var b = 2; | |
37 | |
38 break at: | |
39 var a = 1; | |
40 var b = #2; | |
41 } | |
42 | |
43 break at: | |
44 var b = 2; | |
45 #} | |
46 | |
47 | |
48 break at: | |
49 procedure(); | |
50 #} | |
51 | |
52 | |
53 | |
54 Running test: testIf | |
55 break at: | |
56 var a; | |
57 #if (true) a = true; | |
58 if (!a) { | |
59 | |
60 break at: | |
61 var a; | |
62 if (true) #a = true; | |
63 if (!a) { | |
64 | |
65 break at: | |
66 if (true) a = true; | |
67 #if (!a) { | |
68 a = true; | |
69 | |
70 break at: | |
71 } else { | |
72 #a = false; | |
73 } | |
74 | |
75 break at: | |
76 } | |
77 #if (returnTrue()) { | |
78 a = false; | |
79 | |
80 break at: | |
81 function returnTrue() { | |
82 #return true; | |
83 } | |
84 | |
85 break at: | |
86 return true; | |
87 #} | |
88 | |
89 | |
90 break at: | |
91 if (returnTrue()) { | |
92 #a = false; | |
93 } else { | |
94 | |
95 break at: | |
96 } | |
97 #} | |
98 | |
99 | |
100 | |
101 Running test: testEmptyFunction | |
102 break at: | |
103 function testEmptyFunction() { | |
104 #emptyFunction(); | |
105 } | |
106 | |
107 break at: | |
108 | |
109 function emptyFunction() {#} | |
110 | |
111 | |
112 break at: | |
113 emptyFunction(); | |
114 #} | |
115 | |
116 | |
117 | |
118 Running test: testCallArguments | |
119 break at: | |
120 function testCallArguments() { | |
121 #twoArguments(emptyFunction(), emptyFunction()); | |
dgozman
2017/02/27 17:56:48
Having this and line 141 is a bit confusing.
kozy
2017/02/27 18:35:08
Yes, it should be before first emptyFunction().
| |
122 } | |
123 | |
124 break at: | |
125 | |
126 function emptyFunction() {#} | |
127 | |
128 | |
129 break at: | |
130 function testCallArguments() { | |
131 twoArguments(emptyFunction(), #emptyFunction()); | |
132 } | |
133 | |
134 break at: | |
135 | |
136 function emptyFunction() {#} | |
137 | |
138 | |
139 break at: | |
140 function testCallArguments() { | |
141 #twoArguments(emptyFunction(), emptyFunction()); | |
142 } | |
143 | |
144 break at: | |
145 function twoArguments(a1, a2) { | |
146 #} | |
147 | |
148 | |
149 break at: | |
150 twoArguments(emptyFunction(), emptyFunction()); | |
151 #} | |
152 | |
153 | |
154 | |
155 Running test: testNested | |
156 break at: | |
157 } | |
158 #nested1(); | |
159 } | |
160 | |
161 break at: | |
162 } | |
163 #return nested2(); | |
164 } | |
165 | |
166 break at: | |
167 } | |
168 #nested3(); | |
169 return; | |
170 | |
171 break at: | |
172 function nested3() { | |
173 #} | |
174 nested3(); | |
175 | |
176 break at: | |
177 nested3(); | |
178 #return; | |
179 } | |
180 | |
181 break at: | |
182 return; | |
183 #} | |
184 return nested2(); | |
185 | |
186 break at: | |
187 return nested2(); | |
188 #} | |
189 nested1(); | |
190 | |
191 break at: | |
192 nested1(); | |
193 #} | |
194 | |
195 | |
196 | |
197 Running test: testCallAtReturn | |
198 break at: | |
199 function testCallAtReturn() { | |
200 #return returnCall(); | |
201 } | |
202 | |
203 break at: | |
204 function returnCall() { | |
205 #return return42(); | |
206 } | |
207 | |
208 break at: | |
209 function return42() { | |
210 #return 42; | |
211 } | |
212 | |
213 break at: | |
214 return 42; | |
215 #} | |
216 | |
217 | |
218 break at: | |
219 return return42(); | |
220 #} | |
221 | |
222 | |
223 break at: | |
224 return returnCall(); | |
225 #} | |
226 | |
227 | |
228 | |
229 Running test: testWith | |
230 break at: | |
231 function testWith() { | |
232 #with (returnObject()) { | |
233 foo(); | |
234 | |
235 break at: | |
236 function returnObject() { | |
237 #return ({ foo: () => 42 }); | |
238 } | |
239 | |
240 break at: | |
241 return ({ foo: () => 42 }); | |
242 #} | |
243 | |
244 | |
245 break at: | |
246 with (returnObject()) { | |
247 #foo(); | |
248 } | |
249 | |
250 break at: | |
251 function returnObject() { | |
252 return ({ foo: () => #42 }); | |
253 } | |
254 | |
255 break at: | |
256 function returnObject() { | |
257 return ({ foo: () => 42# }); | |
258 } | |
259 | |
260 break at: | |
261 } | |
262 #with({}) { | |
263 return; | |
264 | |
265 break at: | |
266 with({}) { | |
267 #return; | |
268 } | |
269 | |
270 break at: | |
271 } | |
272 #} | |
273 | |
274 | |
275 | |
276 Running test: testForLoop | |
277 break at: | |
278 function testForLoop() { | |
279 for (var i = #0; i < 1; ++i) {} | |
280 for (var i = 0; i < 1; ++i) i; | |
281 | |
282 break at: | |
283 function testForLoop() { | |
284 for (var i = 0; i #< 1; ++i) {} | |
285 for (var i = 0; i < 1; ++i) i; | |
286 | |
287 break at: | |
288 function testForLoop() { | |
289 for (var i = 0; i < 1; ++#i) {} | |
290 for (var i = 0; i < 1; ++i) i; | |
291 | |
292 break at: | |
293 function testForLoop() { | |
294 for (var i = 0; i #< 1; ++i) {} | |
295 for (var i = 0; i < 1; ++i) i; | |
296 | |
297 break at: | |
298 for (var i = 0; i < 1; ++i) {} | |
299 for (var i = #0; i < 1; ++i) i; | |
300 for (var i = 0; i < 0; ++i) {} | |
301 | |
302 break at: | |
303 for (var i = 0; i < 1; ++i) {} | |
304 for (var i = 0; i #< 1; ++i) i; | |
305 for (var i = 0; i < 0; ++i) {} | |
306 | |
307 break at: | |
308 for (var i = 0; i < 1; ++i) {} | |
309 for (var i = 0; i < 1; ++i) #i; | |
310 for (var i = 0; i < 0; ++i) {} | |
311 | |
312 break at: | |
313 for (var i = 0; i < 1; ++i) {} | |
314 for (var i = 0; i < 1; ++#i) i; | |
315 for (var i = 0; i < 0; ++i) {} | |
316 | |
317 break at: | |
318 for (var i = 0; i < 1; ++i) {} | |
319 for (var i = 0; i #< 1; ++i) i; | |
320 for (var i = 0; i < 0; ++i) {} | |
321 | |
322 break at: | |
323 for (var i = 0; i < 1; ++i) i; | |
324 for (var i = #0; i < 0; ++i) {} | |
325 } | |
326 | |
327 break at: | |
328 for (var i = 0; i < 1; ++i) i; | |
329 for (var i = 0; i #< 0; ++i) {} | |
330 } | |
331 | |
332 break at: | |
333 for (var i = 0; i < 0; ++i) {} | |
334 #} | |
335 | |
336 | |
337 | |
338 Running test: testForOfLoop | |
339 break at: | |
340 function testForOfLoop() { | |
341 for (var k of #[]) {} | |
342 for (var k of [1]) k; | |
343 | |
344 break at: | |
345 function testForOfLoop() { | |
346 for (var k #of []) {} | |
347 for (var k of [1]) k; | |
348 | |
349 break at: | |
350 for (var k of []) {} | |
351 for (var k of #[1]) k; | |
352 var a = []; | |
353 | |
354 break at: | |
355 for (var k of []) {} | |
356 for (var k #of [1]) k; | |
357 var a = []; | |
358 | |
359 break at: | |
360 for (var k of []) {} | |
361 for (var k of [1]) #k; | |
362 var a = []; | |
363 | |
364 break at: | |
365 for (var k of []) {} | |
366 for (var k #of [1]) k; | |
367 var a = []; | |
368 | |
369 break at: | |
370 for (var k of [1]) k; | |
371 var a = #[]; | |
372 for (var k of a) {} | |
373 | |
374 break at: | |
375 var a = []; | |
376 for (var k of #a) {} | |
377 } | |
378 | |
379 break at: | |
380 var a = []; | |
381 for (var k #of a) {} | |
382 } | |
383 | |
384 break at: | |
385 for (var k of a) {} | |
386 #} | |
387 | |
388 | |
389 | |
390 Running test: testForInLoop | |
391 break at: | |
392 function testForInLoop() { | |
393 var o = #{}; | |
394 for (var k in o) {} | |
395 | |
396 break at: | |
397 var o = {}; | |
398 for (var k in #o) {} | |
399 for (var k in o) k; | |
400 | |
401 break at: | |
402 for (var k in o) {} | |
403 for (var k in #o) k; | |
404 for (var k in { a:1 }) {} | |
405 | |
406 break at: | |
407 for (var k in o) k; | |
408 for (var k in #{ a:1 }) {} | |
409 for (var k in { a:1 }) k; | |
410 | |
411 break at: | |
412 for (var k in o) k; | |
413 for (var #k in { a:1 }) {} | |
414 for (var k in { a:1 }) k; | |
415 | |
416 break at: | |
417 for (var k in { a:1 }) {} | |
418 for (var k in #{ a:1 }) k; | |
419 } | |
420 | |
421 break at: | |
422 for (var k in { a:1 }) {} | |
423 for (var #k in { a:1 }) k; | |
424 } | |
425 | |
426 break at: | |
427 for (var k in { a:1 }) {} | |
428 for (var k in { a:1 }) #k; | |
429 } | |
430 | |
431 break at: | |
432 for (var k in { a:1 }) {} | |
433 for (var #k in { a:1 }) k; | |
434 } | |
435 | |
436 break at: | |
437 for (var k in { a:1 }) k; | |
438 #} | |
439 | |
440 | |
441 | |
442 Running test: testSimpleExpressions | |
443 break at: | |
444 function testSimpleExpressions() { | |
445 #1 + 2 + 3; | |
446 var a = 1; | |
447 | |
448 break at: | |
449 1 + 2 + 3; | |
450 var a = #1; | |
451 ++a; | |
452 | |
453 break at: | |
454 var a = 1; | |
455 #++a; | |
456 a--; | |
457 | |
458 break at: | |
459 ++a; | |
460 #a--; | |
461 } | |
462 | |
463 break at: | |
464 a--; | |
465 #} | |
466 | |
467 | |
468 | |
469 Running test: testGetter | |
470 break at: | |
471 function testGetter() { | |
472 #getterFoo(); | |
473 } | |
474 | |
475 break at: | |
476 Object.defineProperty(this, 'getterFoo', { | |
477 get: () => #return42 | |
478 }); | |
479 | |
480 break at: | |
481 Object.defineProperty(this, 'getterFoo', { | |
482 get: () => return42# | |
483 }); | |
484 | |
485 break at: | |
486 function testGetter() { | |
487 #getterFoo(); | |
488 } | |
489 | |
490 break at: | |
491 function return42() { | |
492 #return 42; | |
493 } | |
494 | |
495 break at: | |
496 return 42; | |
497 #} | |
498 | |
499 | |
500 break at: | |
501 getterFoo(); | |
502 #} | |
503 | |
504 | |
505 | |
506 Running test: testChainedCalls | |
507 break at: | |
508 function testChainedCalls() { | |
509 #obj.foo().boo()(); | |
510 } | |
511 | |
512 break at: | |
513 var obj = { | |
514 foo: () => (#{ | |
515 boo: () => return42 | |
516 | |
517 break at: | |
518 boo: () => return42 | |
519 })# | |
520 }; | |
521 | |
522 break at: | |
523 function testChainedCalls() { | |
524 obj.foo().#boo()(); | |
525 } | |
526 | |
527 break at: | |
528 foo: () => ({ | |
529 boo: () => #return42 | |
530 }) | |
531 | |
532 break at: | |
533 foo: () => ({ | |
534 boo: () => return42# | |
535 }) | |
536 | |
537 break at: | |
538 function testChainedCalls() { | |
539 obj.foo().boo()#(); | |
540 } | |
541 | |
542 break at: | |
543 function return42() { | |
544 #return 42; | |
545 } | |
546 | |
547 break at: | |
548 return 42; | |
549 #} | |
550 | |
551 | |
552 break at: | |
553 obj.foo().boo()(); | |
554 #} | |
555 | |
556 | |
557 | |
558 Running test: testChainedWithNative | |
559 break at: | |
560 function testChainedWithNative() { | |
561 #Array.from([1]).concat([2]).map(v => v * 2); | |
562 } | |
563 | |
564 break at: | |
565 function testChainedWithNative() { | |
566 Array.from([1]).concat([2]).map(v => v #* 2); | |
567 } | |
568 | |
569 break at: | |
570 function testChainedWithNative() { | |
571 Array.from([1]).concat([2]).map(v => v * 2#); | |
572 } | |
573 | |
574 break at: | |
575 function testChainedWithNative() { | |
576 Array.from([1]).concat([2]).map(v => v #* 2); | |
577 } | |
578 | |
579 break at: | |
580 function testChainedWithNative() { | |
581 Array.from([1]).concat([2]).map(v => v * 2#); | |
582 } | |
583 | |
584 break at: | |
585 Array.from([1]).concat([2]).map(v => v * 2); | |
586 #} | |
587 | |
588 | |
589 | |
590 Running test: testPromiseThen | |
591 break at: | |
592 function testPromiseThen() { | |
593 #return Promise.resolve().then(v => v * 2).then(v => v * 2); | |
594 } | |
595 | |
596 break at: | |
597 return Promise.resolve().then(v => v * 2).then(v => v * 2); | |
598 #} | |
599 | |
600 | |
601 | |
602 Running test: testSwitch | |
603 break at: | |
604 function testSwitch() { | |
605 for (var i = #0; i < 3; ++i) { | |
606 switch(i) { | |
607 | |
608 break at: | |
609 function testSwitch() { | |
610 for (var i = 0; i #< 3; ++i) { | |
611 switch(i) { | |
612 | |
613 break at: | |
614 for (var i = 0; i < 3; ++i) { | |
615 #switch(i) { | |
616 case 0: continue; | |
617 | |
618 break at: | |
619 switch(i) { | |
620 case 0: #continue; | |
621 case 1: return42(); break; | |
622 | |
623 break at: | |
624 function testSwitch() { | |
625 for (var i = 0; i < 3; ++#i) { | |
626 switch(i) { | |
627 | |
628 break at: | |
629 function testSwitch() { | |
630 for (var i = 0; i #< 3; ++i) { | |
631 switch(i) { | |
632 | |
633 break at: | |
634 for (var i = 0; i < 3; ++i) { | |
635 #switch(i) { | |
636 case 0: continue; | |
637 | |
638 break at: | |
639 case 0: continue; | |
640 case 1: #return42(); break; | |
641 default: return; | |
642 | |
643 break at: | |
644 function return42() { | |
645 #return 42; | |
646 } | |
647 | |
648 break at: | |
649 return 42; | |
650 #} | |
651 | |
652 | |
653 break at: | |
654 case 0: continue; | |
655 case 1: return42(); #break; | |
656 default: return; | |
657 | |
658 break at: | |
659 function testSwitch() { | |
660 for (var i = 0; i < 3; ++#i) { | |
661 switch(i) { | |
662 | |
663 break at: | |
664 function testSwitch() { | |
665 for (var i = 0; i #< 3; ++i) { | |
666 switch(i) { | |
667 | |
668 break at: | |
669 for (var i = 0; i < 3; ++i) { | |
670 #switch(i) { | |
671 case 0: continue; | |
672 | |
673 break at: | |
674 case 1: return42(); break; | |
675 default: #return; | |
676 } | |
677 | |
678 break at: | |
679 } | |
680 #} | |
681 | |
682 | |
683 | |
684 Running test: testGenerator | |
685 break at: | |
686 function testGenerator() { | |
687 var gen = #idMaker(); | |
688 return42(); | |
689 | |
690 break at: | |
691 function* idMaker() { | |
692 #yield 1; | |
693 yield 2; | |
694 | |
695 break at: | |
696 gen.next().value; | |
697 #debugger; | |
698 gen.next().value; | |
699 | |
700 break at: | |
701 debugger; | |
702 #gen.next().value; | |
703 return42(); | |
704 | |
705 break at: | |
706 yield 1; | |
707 #yield 2; | |
708 yield 3; | |
709 | |
710 break at: | |
711 yield 2; | |
712 #yield 3; | |
713 } | |
714 | |
715 break at: | |
716 yield 3; | |
717 #} | |
718 | |
719 | |
720 break at: | |
721 gen.next().value; | |
722 #} | |
723 | |
724 | |
725 | |
726 Running test: testCaughtException | |
727 break at: | |
728 try { | |
729 #throwException() | |
730 } catch (e) { | |
731 | |
732 break at: | |
733 function throwException() { | |
734 #throw new Error(); | |
735 } | |
736 | |
737 break at: | |
738 } catch (e) { | |
739 #return; | |
740 } | |
741 | |
742 break at: | |
743 } | |
744 #} | |
745 | |
746 | |
747 | |
748 Running test: testClasses | |
749 break at: | |
750 function testClasses() { | |
751 #class Cat { | |
752 constructor(name) { | |
753 | |
754 break at: | |
755 } | |
756 #class Lion extends Cat { | |
757 constructor(name) { | |
758 | |
759 break at: | |
760 } | |
761 #new Lion().speak(); | |
762 } | |
763 | |
764 break at: | |
765 constructor(name) { | |
766 #super(name); | |
767 } | |
768 | |
769 break at: | |
770 constructor(name) { | |
771 #this.name = name; | |
772 } | |
773 | |
774 break at: | |
775 this.name = name; | |
776 #} | |
777 | |
778 | |
779 break at: | |
780 super(name); | |
781 #} | |
782 | |
783 | |
784 break at: | |
785 } | |
786 new Lion().#speak(); | |
787 } | |
788 | |
789 break at: | |
790 speak() { | |
791 #super.speak(); | |
792 } | |
793 | |
794 break at: | |
795 speak() { | |
796 #} | |
797 } | |
798 | |
799 break at: | |
800 super.speak(); | |
801 #} | |
802 } | |
803 | |
804 break at: | |
805 new Lion().speak(); | |
806 #} | |
807 | |
808 | |
809 | |
810 Running test: testAsyncAwait | |
811 break at: | |
812 async function testAsyncAwait() { | |
813 await #asyncFoo(); | |
814 await awaitBoo(); | |
815 | |
816 break at: | |
817 async function asyncFoo() { | |
818 await Promise.resolve().#then(v => v * 2); | |
819 return42(); | |
820 | |
821 break at: | |
822 async function asyncFoo() { | |
823 await Promise.#resolve().then(v => v * 2); | |
824 return42(); | |
825 | |
826 break at: | |
827 async function asyncFoo() { | |
828 await Promise.resolve().#then(v => v * 2); | |
829 return42(); | |
830 | |
831 break at: | |
832 async function asyncFoo() { | |
833 #await Promise.resolve().then(v => v * 2); | |
834 return42(); | |
835 | |
836 break at: | |
837 function return42() { | |
838 #return 42; | |
839 } | |
840 | |
841 break at: | |
842 return 42; | |
843 #} | |
844 | |
845 | |
846 break at: | |
847 async function asyncBoo() { | |
848 await Promise.#resolve(); | |
849 | |
850 | |
851 break at: | |
852 async function asyncBoo() { | |
853 #await Promise.resolve(); | |
854 | |
855 | |
OLD | NEW |