~ubuntu-branches/ubuntu/vivid/golang/vivid

« back to all changes in this revision

Viewing changes to src/cmd/vet/test_deadcode.go

  • Committer: Package Import Robot
  • Author(s): James Page
  • Date: 2013-08-20 14:06:23 UTC
  • mfrom: (14.1.23 saucy-proposed)
  • Revision ID: package-import@ubuntu.com-20130820140623-b414jfxi3m0qkmrq
Tags: 2:1.1.2-2ubuntu1
* Merge from Debian unstable (LP: #1211749, #1202027). Remaining changes:
  - 016-armhf-elf-header.patch: Use correct ELF header for armhf binaries.
  - d/control,control.cross: Update Breaks/Replaces for Ubuntu
    versions to ensure smooth upgrades, regenerate control file.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Copyright 2013 The Go Authors. All rights reserved.
 
2
// Use of this source code is governed by a BSD-style
 
3
// license that can be found in the LICENSE file.
 
4
 
 
5
// +build vet_test
 
6
// +build ignore
 
7
 
 
8
// This file contains tests for the dead code checker.
 
9
 
 
10
package main
 
11
 
 
12
type T int
 
13
 
 
14
var x interface{}
 
15
var c chan int
 
16
 
 
17
func external() int // ok
 
18
 
 
19
func _() int {
 
20
}
 
21
 
 
22
func _() int {
 
23
        print(1)
 
24
}
 
25
 
 
26
func _() int {
 
27
        print(1)
 
28
        return 2
 
29
        println() // ERROR "unreachable code"
 
30
}
 
31
 
 
32
func _() int {
 
33
L:
 
34
        print(1)
 
35
        goto L
 
36
        println() // ERROR "unreachable code"
 
37
}
 
38
 
 
39
func _() int {
 
40
        print(1)
 
41
        panic(2)
 
42
        println() // ERROR "unreachable code"
 
43
}
 
44
 
 
45
// but only builtin panic
 
46
func _() int {
 
47
        var panic = func(int) {}
 
48
        print(1)
 
49
        panic(2)
 
50
        println() // ok
 
51
}
 
52
 
 
53
func _() int {
 
54
        {
 
55
                print(1)
 
56
                return 2
 
57
                println() // ERROR "unreachable code"
 
58
        }
 
59
        println() // ok
 
60
}
 
61
 
 
62
func _() int {
 
63
        {
 
64
                print(1)
 
65
                return 2
 
66
        }
 
67
        println() // ERROR "unreachable code"
 
68
}
 
69
 
 
70
func _() int {
 
71
L:
 
72
        {
 
73
                print(1)
 
74
                goto L
 
75
                println() // ERROR "unreachable code"
 
76
        }
 
77
        println() // ok
 
78
}
 
79
 
 
80
func _() int {
 
81
L:
 
82
        {
 
83
                print(1)
 
84
                goto L
 
85
        }
 
86
        println() // ERROR "unreachable code"
 
87
}
 
88
 
 
89
func _() int {
 
90
        print(1)
 
91
        {
 
92
                panic(2)
 
93
        }
 
94
}
 
95
 
 
96
func _() int {
 
97
        print(1)
 
98
        {
 
99
                panic(2)
 
100
                println() // ERROR "unreachable code"
 
101
        }
 
102
}
 
103
 
 
104
func _() int {
 
105
        print(1)
 
106
        {
 
107
                panic(2)
 
108
        }
 
109
        println() // ERROR "unreachable code"
 
110
}
 
111
 
 
112
func _() int {
 
113
        print(1)
 
114
        return 2
 
115
        { // ERROR "unreachable code"
 
116
        }
 
117
}
 
118
 
 
119
func _() int {
 
120
L:
 
121
        print(1)
 
122
        goto L
 
123
        { // ERROR "unreachable code"
 
124
        }
 
125
}
 
126
 
 
127
func _() int {
 
128
        print(1)
 
129
        panic(2)
 
130
        { // ERROR "unreachable code"
 
131
        }
 
132
}
 
133
 
 
134
func _() int {
 
135
        {
 
136
                print(1)
 
137
                return 2
 
138
                { // ERROR "unreachable code"
 
139
                }
 
140
        }
 
141
}
 
142
 
 
143
func _() int {
 
144
L:
 
145
        {
 
146
                print(1)
 
147
                goto L
 
148
                { // ERROR "unreachable code"
 
149
                }
 
150
        }
 
151
}
 
152
 
 
153
func _() int {
 
154
        print(1)
 
155
        {
 
156
                panic(2)
 
157
                { // ERROR "unreachable code"
 
158
                }
 
159
        }
 
160
}
 
161
 
 
162
func _() int {
 
163
        {
 
164
                print(1)
 
165
                return 2
 
166
        }
 
167
        { // ERROR "unreachable code"
 
168
        }
 
169
}
 
170
 
 
171
func _() int {
 
172
L:
 
173
        {
 
174
                print(1)
 
175
                goto L
 
176
        }
 
177
        { // ERROR "unreachable code"
 
178
        }
 
179
}
 
180
 
 
181
func _() int {
 
182
        print(1)
 
183
        {
 
184
                panic(2)
 
185
        }
 
186
        { // ERROR "unreachable code"
 
187
        }
 
188
}
 
189
 
 
190
func _() int {
 
191
        print(1)
 
192
        if x == nil {
 
193
                panic(2)
 
194
        } else {
 
195
                panic(3)
 
196
        }
 
197
        println() // ERROR "unreachable code"
 
198
}
 
199
 
 
200
func _() int {
 
201
L:
 
202
        print(1)
 
203
        if x == nil {
 
204
                panic(2)
 
205
        } else {
 
206
                goto L
 
207
        }
 
208
        println() // ERROR "unreachable code"
 
209
}
 
210
 
 
211
func _() int {
 
212
L:
 
213
        print(1)
 
214
        if x == nil {
 
215
                panic(2)
 
216
        } else if x == 1 {
 
217
                return 0
 
218
        } else if x != 2 {
 
219
                panic(3)
 
220
        } else {
 
221
                goto L
 
222
        }
 
223
        println() // ERROR "unreachable code"
 
224
}
 
225
 
 
226
// if-else chain missing final else is not okay, even if the
 
227
// conditions cover every possible case.
 
228
 
 
229
func _() int {
 
230
        print(1)
 
231
        if x == nil {
 
232
                panic(2)
 
233
        } else if x != nil {
 
234
                panic(3)
 
235
        }
 
236
        println() // ok
 
237
}
 
238
 
 
239
func _() int {
 
240
        print(1)
 
241
        if x == nil {
 
242
                panic(2)
 
243
        }
 
244
        println() // ok
 
245
}
 
246
 
 
247
func _() int {
 
248
L:
 
249
        print(1)
 
250
        if x == nil {
 
251
                panic(2)
 
252
        } else if x == 1 {
 
253
                return 0
 
254
        } else if x != 1 {
 
255
                panic(3)
 
256
        }
 
257
        println() // ok
 
258
}
 
259
 
 
260
func _() int {
 
261
        print(1)
 
262
        for {
 
263
        }
 
264
        println() // ERROR "unreachable code"
 
265
}
 
266
 
 
267
func _() int {
 
268
        for {
 
269
                for {
 
270
                        break
 
271
                }
 
272
        }
 
273
        println() // ERROR "unreachable code"
 
274
}
 
275
 
 
276
func _() int {
 
277
        for {
 
278
                for {
 
279
                        break
 
280
                        println() // ERROR "unreachable code"
 
281
                }
 
282
        }
 
283
}
 
284
 
 
285
func _() int {
 
286
        for {
 
287
                for {
 
288
                        continue
 
289
                        println() // ERROR "unreachable code"
 
290
                }
 
291
        }
 
292
}
 
293
 
 
294
func _() int {
 
295
        for {
 
296
        L:
 
297
                for {
 
298
                        break L
 
299
                }
 
300
        }
 
301
        println() // ERROR "unreachable code"
 
302
}
 
303
 
 
304
func _() int {
 
305
        print(1)
 
306
        for {
 
307
                break
 
308
        }
 
309
        println() // ok
 
310
}
 
311
 
 
312
func _() int {
 
313
        for {
 
314
                for {
 
315
                }
 
316
                break // ERROR "unreachable code"
 
317
        }
 
318
        println() // ok
 
319
}
 
320
 
 
321
func _() int {
 
322
L:
 
323
        for {
 
324
                for {
 
325
                        break L
 
326
                }
 
327
        }
 
328
        println() // ok
 
329
}
 
330
 
 
331
func _() int {
 
332
        print(1)
 
333
        for x == nil {
 
334
        }
 
335
        println() // ok
 
336
}
 
337
 
 
338
func _() int {
 
339
        for x == nil {
 
340
                for {
 
341
                        break
 
342
                }
 
343
        }
 
344
        println() // ok
 
345
}
 
346
 
 
347
func _() int {
 
348
        for x == nil {
 
349
        L:
 
350
                for {
 
351
                        break L
 
352
                }
 
353
        }
 
354
        println() // ok
 
355
}
 
356
 
 
357
func _() int {
 
358
        print(1)
 
359
        for true {
 
360
        }
 
361
        println() // ok
 
362
}
 
363
 
 
364
func _() int {
 
365
        for true {
 
366
                for {
 
367
                        break
 
368
                }
 
369
        }
 
370
        println() // ok
 
371
}
 
372
 
 
373
func _() int {
 
374
        for true {
 
375
        L:
 
376
                for {
 
377
                        break L
 
378
                }
 
379
        }
 
380
        println() // ok
 
381
}
 
382
 
 
383
func _() int {
 
384
        print(1)
 
385
        select {}
 
386
        println() // ERROR "unreachable code"
 
387
}
 
388
 
 
389
func _() int {
 
390
        print(1)
 
391
        select {
 
392
        case <-c:
 
393
                print(2)
 
394
                panic("abc")
 
395
                println() // ERROR "unreachable code"
 
396
        }
 
397
}
 
398
 
 
399
func _() int {
 
400
        print(1)
 
401
        select {
 
402
        case <-c:
 
403
                print(2)
 
404
                panic("abc")
 
405
        }
 
406
        println() // ERROR "unreachable code"
 
407
}
 
408
 
 
409
func _() int {
 
410
        print(1)
 
411
        select {
 
412
        case <-c:
 
413
                print(2)
 
414
                for {
 
415
                }
 
416
                println() // ERROR "unreachable code"
 
417
        }
 
418
}
 
419
 
 
420
func _() int {
 
421
        print(1)
 
422
        select {
 
423
        case <-c:
 
424
                print(2)
 
425
                for {
 
426
                }
 
427
        }
 
428
        println() // ERROR "unreachable code"
 
429
}
 
430
 
 
431
func _() int {
 
432
L:
 
433
        print(1)
 
434
        select {
 
435
        case <-c:
 
436
                print(2)
 
437
                panic("abc")
 
438
                println() // ERROR "unreachable code"
 
439
        case c <- 1:
 
440
                print(2)
 
441
                goto L
 
442
                println() // ERROR "unreachable code"
 
443
        }
 
444
}
 
445
 
 
446
func _() int {
 
447
L:
 
448
        print(1)
 
449
        select {
 
450
        case <-c:
 
451
                print(2)
 
452
                panic("abc")
 
453
        case c <- 1:
 
454
                print(2)
 
455
                goto L
 
456
        }
 
457
        println() // ERROR "unreachable code"
 
458
}
 
459
 
 
460
func _() int {
 
461
        print(1)
 
462
        select {
 
463
        case <-c:
 
464
                print(2)
 
465
                panic("abc")
 
466
                println() // ERROR "unreachable code"
 
467
        default:
 
468
                select {}
 
469
                println() // ERROR "unreachable code"
 
470
        }
 
471
}
 
472
 
 
473
func _() int {
 
474
        print(1)
 
475
        select {
 
476
        case <-c:
 
477
                print(2)
 
478
                panic("abc")
 
479
        default:
 
480
                select {}
 
481
        }
 
482
        println() // ERROR "unreachable code"
 
483
}
 
484
 
 
485
func _() int {
 
486
        print(1)
 
487
        select {
 
488
        case <-c:
 
489
                print(2)
 
490
        }
 
491
        println() // ok
 
492
}
 
493
 
 
494
func _() int {
 
495
L:
 
496
        print(1)
 
497
        select {
 
498
        case <-c:
 
499
                print(2)
 
500
                panic("abc")
 
501
                goto L // ERROR "unreachable code"
 
502
        case c <- 1:
 
503
                print(2)
 
504
        }
 
505
        println() // ok
 
506
}
 
507
 
 
508
func _() int {
 
509
        print(1)
 
510
        select {
 
511
        case <-c:
 
512
                print(2)
 
513
                panic("abc")
 
514
        default:
 
515
                print(2)
 
516
        }
 
517
        println() // ok
 
518
}
 
519
 
 
520
func _() int {
 
521
        print(1)
 
522
        select {
 
523
        default:
 
524
                break
 
525
        }
 
526
        println() // ok
 
527
}
 
528
 
 
529
func _() int {
 
530
        print(1)
 
531
        select {
 
532
        case <-c:
 
533
                print(2)
 
534
                panic("abc")
 
535
                break // ERROR "unreachable code"
 
536
        }
 
537
        println() // ok
 
538
}
 
539
 
 
540
func _() int {
 
541
        print(1)
 
542
L:
 
543
        select {
 
544
        case <-c:
 
545
                print(2)
 
546
                for {
 
547
                        break L
 
548
                }
 
549
        }
 
550
        println() // ok
 
551
}
 
552
 
 
553
func _() int {
 
554
        print(1)
 
555
L:
 
556
        select {
 
557
        case <-c:
 
558
                print(2)
 
559
                panic("abc")
 
560
        case c <- 1:
 
561
                print(2)
 
562
                break L
 
563
        }
 
564
        println() // ok
 
565
}
 
566
 
 
567
func _() int {
 
568
        print(1)
 
569
        select {
 
570
        case <-c:
 
571
                print(1)
 
572
                panic("abc")
 
573
        default:
 
574
                select {}
 
575
                break // ERROR "unreachable code"
 
576
        }
 
577
        println() // ok
 
578
}
 
579
 
 
580
func _() int {
 
581
        print(1)
 
582
        switch x {
 
583
        case 1:
 
584
                print(2)
 
585
                panic(3)
 
586
                println() // ERROR "unreachable code"
 
587
        default:
 
588
                return 4
 
589
                println() // ERROR "unreachable code"
 
590
        }
 
591
}
 
592
 
 
593
func _() int {
 
594
        print(1)
 
595
        switch x {
 
596
        case 1:
 
597
                print(2)
 
598
                panic(3)
 
599
        default:
 
600
                return 4
 
601
        }
 
602
        println() // ERROR "unreachable code"
 
603
}
 
604
 
 
605
func _() int {
 
606
        print(1)
 
607
        switch x {
 
608
        default:
 
609
                return 4
 
610
                println() // ERROR "unreachable code"
 
611
        case 1:
 
612
                print(2)
 
613
                panic(3)
 
614
                println() // ERROR "unreachable code"
 
615
        }
 
616
}
 
617
 
 
618
func _() int {
 
619
        print(1)
 
620
        switch x {
 
621
        default:
 
622
                return 4
 
623
        case 1:
 
624
                print(2)
 
625
                panic(3)
 
626
        }
 
627
        println() // ERROR "unreachable code"
 
628
}
 
629
 
 
630
func _() int {
 
631
        print(1)
 
632
        switch x {
 
633
        case 1:
 
634
                print(2)
 
635
                fallthrough
 
636
        default:
 
637
                return 4
 
638
                println() // ERROR "unreachable code"
 
639
        }
 
640
}
 
641
 
 
642
func _() int {
 
643
        print(1)
 
644
        switch x {
 
645
        case 1:
 
646
                print(2)
 
647
                fallthrough
 
648
        default:
 
649
                return 4
 
650
        }
 
651
        println() // ERROR "unreachable code"
 
652
}
 
653
 
 
654
func _() int {
 
655
        print(1)
 
656
        switch {
 
657
        }
 
658
        println() // ok
 
659
}
 
660
 
 
661
func _() int {
 
662
        print(1)
 
663
        switch x {
 
664
        case 1:
 
665
                print(2)
 
666
                panic(3)
 
667
        case 2:
 
668
                return 4
 
669
        }
 
670
        println() // ok
 
671
}
 
672
 
 
673
func _() int {
 
674
        print(1)
 
675
        switch x {
 
676
        case 2:
 
677
                return 4
 
678
        case 1:
 
679
                print(2)
 
680
                panic(3)
 
681
        }
 
682
        println() // ok
 
683
}
 
684
 
 
685
func _() int {
 
686
        print(1)
 
687
        switch x {
 
688
        case 1:
 
689
                print(2)
 
690
                fallthrough
 
691
        case 2:
 
692
                return 4
 
693
        }
 
694
        println() // ok
 
695
}
 
696
 
 
697
func _() int {
 
698
        print(1)
 
699
        switch x {
 
700
        case 1:
 
701
                print(2)
 
702
                panic(3)
 
703
        }
 
704
        println() // ok
 
705
}
 
706
 
 
707
func _() int {
 
708
        print(1)
 
709
L:
 
710
        switch x {
 
711
        case 1:
 
712
                print(2)
 
713
                panic(3)
 
714
                break L // ERROR "unreachable code"
 
715
        default:
 
716
                return 4
 
717
        }
 
718
        println() // ok
 
719
}
 
720
 
 
721
func _() int {
 
722
        print(1)
 
723
        switch x {
 
724
        default:
 
725
                return 4
 
726
                break // ERROR "unreachable code"
 
727
        case 1:
 
728
                print(2)
 
729
                panic(3)
 
730
        }
 
731
        println() // ok
 
732
}
 
733
 
 
734
func _() int {
 
735
        print(1)
 
736
L:
 
737
        switch x {
 
738
        case 1:
 
739
                print(2)
 
740
                for {
 
741
                        break L
 
742
                }
 
743
        default:
 
744
                return 4
 
745
        }
 
746
        println() // ok
 
747
}
 
748
 
 
749
func _() int {
 
750
        print(1)
 
751
        switch x.(type) {
 
752
        case int:
 
753
                print(2)
 
754
                panic(3)
 
755
                println() // ERROR "unreachable code"
 
756
        default:
 
757
                return 4
 
758
                println() // ERROR "unreachable code"
 
759
        }
 
760
}
 
761
 
 
762
func _() int {
 
763
        print(1)
 
764
        switch x.(type) {
 
765
        case int:
 
766
                print(2)
 
767
                panic(3)
 
768
        default:
 
769
                return 4
 
770
        }
 
771
        println() // ERROR "unreachable code"
 
772
}
 
773
 
 
774
func _() int {
 
775
        print(1)
 
776
        switch x.(type) {
 
777
        default:
 
778
                return 4
 
779
                println() // ERROR "unreachable code"
 
780
        case int:
 
781
                print(2)
 
782
                panic(3)
 
783
                println() // ERROR "unreachable code"
 
784
        }
 
785
}
 
786
 
 
787
func _() int {
 
788
        print(1)
 
789
        switch x.(type) {
 
790
        default:
 
791
                return 4
 
792
        case int:
 
793
                print(2)
 
794
                panic(3)
 
795
        }
 
796
        println() // ERROR "unreachable code"
 
797
}
 
798
 
 
799
func _() int {
 
800
        print(1)
 
801
        switch x.(type) {
 
802
        case int:
 
803
                print(2)
 
804
                fallthrough
 
805
        default:
 
806
                return 4
 
807
                println() // ERROR "unreachable code"
 
808
        }
 
809
}
 
810
 
 
811
func _() int {
 
812
        print(1)
 
813
        switch x.(type) {
 
814
        case int:
 
815
                print(2)
 
816
                fallthrough
 
817
        default:
 
818
                return 4
 
819
        }
 
820
        println() // ERROR "unreachable code"
 
821
}
 
822
 
 
823
func _() int {
 
824
        print(1)
 
825
        switch {
 
826
        }
 
827
        println() // ok
 
828
}
 
829
 
 
830
func _() int {
 
831
        print(1)
 
832
        switch x.(type) {
 
833
        case int:
 
834
                print(2)
 
835
                panic(3)
 
836
        case float64:
 
837
                return 4
 
838
        }
 
839
        println() // ok
 
840
}
 
841
 
 
842
func _() int {
 
843
        print(1)
 
844
        switch x.(type) {
 
845
        case float64:
 
846
                return 4
 
847
        case int:
 
848
                print(2)
 
849
                panic(3)
 
850
        }
 
851
        println() // ok
 
852
}
 
853
 
 
854
func _() int {
 
855
        print(1)
 
856
        switch x.(type) {
 
857
        case int:
 
858
                print(2)
 
859
                fallthrough
 
860
        case float64:
 
861
                return 4
 
862
        }
 
863
        println() // ok
 
864
}
 
865
 
 
866
func _() int {
 
867
        print(1)
 
868
        switch x.(type) {
 
869
        case int:
 
870
                print(2)
 
871
                panic(3)
 
872
        }
 
873
        println() // ok
 
874
}
 
875
 
 
876
func _() int {
 
877
        print(1)
 
878
L:
 
879
        switch x.(type) {
 
880
        case int:
 
881
                print(2)
 
882
                panic(3)
 
883
                break L // ERROR "unreachable code"
 
884
        default:
 
885
                return 4
 
886
        }
 
887
        println() // ok
 
888
}
 
889
 
 
890
func _() int {
 
891
        print(1)
 
892
        switch x.(type) {
 
893
        default:
 
894
                return 4
 
895
                break // ERROR "unreachable code"
 
896
        case int:
 
897
                print(2)
 
898
                panic(3)
 
899
        }
 
900
        println() // ok
 
901
}
 
902
 
 
903
func _() int {
 
904
        print(1)
 
905
L:
 
906
        switch x.(type) {
 
907
        case int:
 
908
                print(2)
 
909
                for {
 
910
                        break L
 
911
                }
 
912
        default:
 
913
                return 4
 
914
        }
 
915
        println() // ok
 
916
}
 
917
 
 
918
// again, but without the leading print(1).
 
919
// testing that everything works when the terminating statement is first.
 
920
 
 
921
func _() int {
 
922
        println() // ok
 
923
}
 
924
 
 
925
func _() int {
 
926
        return 2
 
927
        println() // ERROR "unreachable code"
 
928
}
 
929
 
 
930
func _() int {
 
931
L:
 
932
        goto L
 
933
        println() // ERROR "unreachable code"
 
934
}
 
935
 
 
936
func _() int {
 
937
        panic(2)
 
938
        println() // ERROR "unreachable code"
 
939
}
 
940
 
 
941
// but only builtin panic
 
942
func _() int {
 
943
        var panic = func(int) {}
 
944
        panic(2)
 
945
        println() // ok
 
946
}
 
947
 
 
948
func _() int {
 
949
        {
 
950
                return 2
 
951
                println() // ERROR "unreachable code"
 
952
        }
 
953
}
 
954
 
 
955
func _() int {
 
956
        {
 
957
                return 2
 
958
        }
 
959
        println() // ERROR "unreachable code"
 
960
}
 
961
 
 
962
func _() int {
 
963
L:
 
964
        {
 
965
                goto L
 
966
                println() // ERROR "unreachable code"
 
967
        }
 
968
}
 
969
 
 
970
func _() int {
 
971
L:
 
972
        {
 
973
                goto L
 
974
        }
 
975
        println() // ERROR "unreachable code"
 
976
}
 
977
 
 
978
func _() int {
 
979
        {
 
980
                panic(2)
 
981
                println() // ERROR "unreachable code"
 
982
        }
 
983
}
 
984
 
 
985
func _() int {
 
986
        {
 
987
                panic(2)
 
988
        }
 
989
        println() // ERROR "unreachable code"
 
990
}
 
991
 
 
992
func _() int {
 
993
        return 2
 
994
        { // ERROR "unreachable code"
 
995
        }
 
996
        println() // ok
 
997
}
 
998
 
 
999
func _() int {
 
1000
L:
 
1001
        goto L
 
1002
        { // ERROR "unreachable code"
 
1003
        }
 
1004
        println() // ok
 
1005
}
 
1006
 
 
1007
func _() int {
 
1008
        panic(2)
 
1009
        { // ERROR "unreachable code"
 
1010
        }
 
1011
        println() // ok
 
1012
}
 
1013
 
 
1014
func _() int {
 
1015
        {
 
1016
                return 2
 
1017
                { // ERROR "unreachable code"
 
1018
                }
 
1019
        }
 
1020
        println() // ok
 
1021
}
 
1022
 
 
1023
func _() int {
 
1024
L:
 
1025
        {
 
1026
                goto L
 
1027
                { // ERROR "unreachable code"
 
1028
                }
 
1029
        }
 
1030
        println() // ok
 
1031
}
 
1032
 
 
1033
func _() int {
 
1034
        {
 
1035
                panic(2)
 
1036
                { // ERROR "unreachable code"
 
1037
                }
 
1038
        }
 
1039
        println() // ok
 
1040
}
 
1041
 
 
1042
func _() int {
 
1043
        {
 
1044
                return 2
 
1045
        }
 
1046
        { // ERROR "unreachable code"
 
1047
        }
 
1048
        println() // ok
 
1049
}
 
1050
 
 
1051
func _() int {
 
1052
L:
 
1053
        {
 
1054
                goto L
 
1055
        }
 
1056
        { // ERROR "unreachable code"
 
1057
        }
 
1058
        println() // ok
 
1059
}
 
1060
 
 
1061
func _() int {
 
1062
        {
 
1063
                panic(2)
 
1064
        }
 
1065
        { // ERROR "unreachable code"
 
1066
        }
 
1067
        println() // ok
 
1068
}
 
1069
 
 
1070
// again, with func literals
 
1071
 
 
1072
var _ = func() int {
 
1073
}
 
1074
 
 
1075
var _ = func() int {
 
1076
        print(1)
 
1077
}
 
1078
 
 
1079
var _ = func() int {
 
1080
        print(1)
 
1081
        return 2
 
1082
        println() // ERROR "unreachable code"
 
1083
}
 
1084
 
 
1085
var _ = func() int {
 
1086
L:
 
1087
        print(1)
 
1088
        goto L
 
1089
        println() // ERROR "unreachable code"
 
1090
}
 
1091
 
 
1092
var _ = func() int {
 
1093
        print(1)
 
1094
        panic(2)
 
1095
        println() // ERROR "unreachable code"
 
1096
}
 
1097
 
 
1098
// but only builtin panic
 
1099
var _ = func() int {
 
1100
        var panic = func(int) {}
 
1101
        print(1)
 
1102
        panic(2)
 
1103
        println() // ok
 
1104
}
 
1105
 
 
1106
var _ = func() int {
 
1107
        {
 
1108
                print(1)
 
1109
                return 2
 
1110
                println() // ERROR "unreachable code"
 
1111
        }
 
1112
        println() // ok
 
1113
}
 
1114
 
 
1115
var _ = func() int {
 
1116
        {
 
1117
                print(1)
 
1118
                return 2
 
1119
        }
 
1120
        println() // ERROR "unreachable code"
 
1121
}
 
1122
 
 
1123
var _ = func() int {
 
1124
L:
 
1125
        {
 
1126
                print(1)
 
1127
                goto L
 
1128
                println() // ERROR "unreachable code"
 
1129
        }
 
1130
        println() // ok
 
1131
}
 
1132
 
 
1133
var _ = func() int {
 
1134
L:
 
1135
        {
 
1136
                print(1)
 
1137
                goto L
 
1138
        }
 
1139
        println() // ERROR "unreachable code"
 
1140
}
 
1141
 
 
1142
var _ = func() int {
 
1143
        print(1)
 
1144
        {
 
1145
                panic(2)
 
1146
        }
 
1147
}
 
1148
 
 
1149
var _ = func() int {
 
1150
        print(1)
 
1151
        {
 
1152
                panic(2)
 
1153
                println() // ERROR "unreachable code"
 
1154
        }
 
1155
}
 
1156
 
 
1157
var _ = func() int {
 
1158
        print(1)
 
1159
        {
 
1160
                panic(2)
 
1161
        }
 
1162
        println() // ERROR "unreachable code"
 
1163
}
 
1164
 
 
1165
var _ = func() int {
 
1166
        print(1)
 
1167
        return 2
 
1168
        { // ERROR "unreachable code"
 
1169
        }
 
1170
}
 
1171
 
 
1172
var _ = func() int {
 
1173
L:
 
1174
        print(1)
 
1175
        goto L
 
1176
        { // ERROR "unreachable code"
 
1177
        }
 
1178
}
 
1179
 
 
1180
var _ = func() int {
 
1181
        print(1)
 
1182
        panic(2)
 
1183
        { // ERROR "unreachable code"
 
1184
        }
 
1185
}
 
1186
 
 
1187
var _ = func() int {
 
1188
        {
 
1189
                print(1)
 
1190
                return 2
 
1191
                { // ERROR "unreachable code"
 
1192
                }
 
1193
        }
 
1194
}
 
1195
 
 
1196
var _ = func() int {
 
1197
L:
 
1198
        {
 
1199
                print(1)
 
1200
                goto L
 
1201
                { // ERROR "unreachable code"
 
1202
                }
 
1203
        }
 
1204
}
 
1205
 
 
1206
var _ = func() int {
 
1207
        print(1)
 
1208
        {
 
1209
                panic(2)
 
1210
                { // ERROR "unreachable code"
 
1211
                }
 
1212
        }
 
1213
}
 
1214
 
 
1215
var _ = func() int {
 
1216
        {
 
1217
                print(1)
 
1218
                return 2
 
1219
        }
 
1220
        { // ERROR "unreachable code"
 
1221
        }
 
1222
}
 
1223
 
 
1224
var _ = func() int {
 
1225
L:
 
1226
        {
 
1227
                print(1)
 
1228
                goto L
 
1229
        }
 
1230
        { // ERROR "unreachable code"
 
1231
        }
 
1232
}
 
1233
 
 
1234
var _ = func() int {
 
1235
        print(1)
 
1236
        {
 
1237
                panic(2)
 
1238
        }
 
1239
        { // ERROR "unreachable code"
 
1240
        }
 
1241
}
 
1242
 
 
1243
var _ = func() int {
 
1244
        print(1)
 
1245
        if x == nil {
 
1246
                panic(2)
 
1247
        } else {
 
1248
                panic(3)
 
1249
        }
 
1250
        println() // ERROR "unreachable code"
 
1251
}
 
1252
 
 
1253
var _ = func() int {
 
1254
L:
 
1255
        print(1)
 
1256
        if x == nil {
 
1257
                panic(2)
 
1258
        } else {
 
1259
                goto L
 
1260
        }
 
1261
        println() // ERROR "unreachable code"
 
1262
}
 
1263
 
 
1264
var _ = func() int {
 
1265
L:
 
1266
        print(1)
 
1267
        if x == nil {
 
1268
                panic(2)
 
1269
        } else if x == 1 {
 
1270
                return 0
 
1271
        } else if x != 2 {
 
1272
                panic(3)
 
1273
        } else {
 
1274
                goto L
 
1275
        }
 
1276
        println() // ERROR "unreachable code"
 
1277
}
 
1278
 
 
1279
// if-else chain missing final else is not okay, even if the
 
1280
// conditions cover every possible case.
 
1281
 
 
1282
var _ = func() int {
 
1283
        print(1)
 
1284
        if x == nil {
 
1285
                panic(2)
 
1286
        } else if x != nil {
 
1287
                panic(3)
 
1288
        }
 
1289
        println() // ok
 
1290
}
 
1291
 
 
1292
var _ = func() int {
 
1293
        print(1)
 
1294
        if x == nil {
 
1295
                panic(2)
 
1296
        }
 
1297
        println() // ok
 
1298
}
 
1299
 
 
1300
var _ = func() int {
 
1301
L:
 
1302
        print(1)
 
1303
        if x == nil {
 
1304
                panic(2)
 
1305
        } else if x == 1 {
 
1306
                return 0
 
1307
        } else if x != 1 {
 
1308
                panic(3)
 
1309
        }
 
1310
        println() // ok
 
1311
}
 
1312
 
 
1313
var _ = func() int {
 
1314
        print(1)
 
1315
        for {
 
1316
        }
 
1317
        println() // ERROR "unreachable code"
 
1318
}
 
1319
 
 
1320
var _ = func() int {
 
1321
        for {
 
1322
                for {
 
1323
                        break
 
1324
                }
 
1325
        }
 
1326
        println() // ERROR "unreachable code"
 
1327
}
 
1328
 
 
1329
var _ = func() int {
 
1330
        for {
 
1331
                for {
 
1332
                        break
 
1333
                        println() // ERROR "unreachable code"
 
1334
                }
 
1335
        }
 
1336
}
 
1337
 
 
1338
var _ = func() int {
 
1339
        for {
 
1340
                for {
 
1341
                        continue
 
1342
                        println() // ERROR "unreachable code"
 
1343
                }
 
1344
        }
 
1345
}
 
1346
 
 
1347
var _ = func() int {
 
1348
        for {
 
1349
        L:
 
1350
                for {
 
1351
                        break L
 
1352
                }
 
1353
        }
 
1354
        println() // ERROR "unreachable code"
 
1355
}
 
1356
 
 
1357
var _ = func() int {
 
1358
        print(1)
 
1359
        for {
 
1360
                break
 
1361
        }
 
1362
        println() // ok
 
1363
}
 
1364
 
 
1365
var _ = func() int {
 
1366
        for {
 
1367
                for {
 
1368
                }
 
1369
                break // ERROR "unreachable code"
 
1370
        }
 
1371
        println() // ok
 
1372
}
 
1373
 
 
1374
var _ = func() int {
 
1375
L:
 
1376
        for {
 
1377
                for {
 
1378
                        break L
 
1379
                }
 
1380
        }
 
1381
        println() // ok
 
1382
}
 
1383
 
 
1384
var _ = func() int {
 
1385
        print(1)
 
1386
        for x == nil {
 
1387
        }
 
1388
        println() // ok
 
1389
}
 
1390
 
 
1391
var _ = func() int {
 
1392
        for x == nil {
 
1393
                for {
 
1394
                        break
 
1395
                }
 
1396
        }
 
1397
        println() // ok
 
1398
}
 
1399
 
 
1400
var _ = func() int {
 
1401
        for x == nil {
 
1402
        L:
 
1403
                for {
 
1404
                        break L
 
1405
                }
 
1406
        }
 
1407
        println() // ok
 
1408
}
 
1409
 
 
1410
var _ = func() int {
 
1411
        print(1)
 
1412
        for true {
 
1413
        }
 
1414
        println() // ok
 
1415
}
 
1416
 
 
1417
var _ = func() int {
 
1418
        for true {
 
1419
                for {
 
1420
                        break
 
1421
                }
 
1422
        }
 
1423
        println() // ok
 
1424
}
 
1425
 
 
1426
var _ = func() int {
 
1427
        for true {
 
1428
        L:
 
1429
                for {
 
1430
                        break L
 
1431
                }
 
1432
        }
 
1433
        println() // ok
 
1434
}
 
1435
 
 
1436
var _ = func() int {
 
1437
        print(1)
 
1438
        select {}
 
1439
        println() // ERROR "unreachable code"
 
1440
}
 
1441
 
 
1442
var _ = func() int {
 
1443
        print(1)
 
1444
        select {
 
1445
        case <-c:
 
1446
                print(2)
 
1447
                panic("abc")
 
1448
                println() // ERROR "unreachable code"
 
1449
        }
 
1450
}
 
1451
 
 
1452
var _ = func() int {
 
1453
        print(1)
 
1454
        select {
 
1455
        case <-c:
 
1456
                print(2)
 
1457
                panic("abc")
 
1458
        }
 
1459
        println() // ERROR "unreachable code"
 
1460
}
 
1461
 
 
1462
var _ = func() int {
 
1463
        print(1)
 
1464
        select {
 
1465
        case <-c:
 
1466
                print(2)
 
1467
                for {
 
1468
                }
 
1469
                println() // ERROR "unreachable code"
 
1470
        }
 
1471
}
 
1472
 
 
1473
var _ = func() int {
 
1474
        print(1)
 
1475
        select {
 
1476
        case <-c:
 
1477
                print(2)
 
1478
                for {
 
1479
                }
 
1480
        }
 
1481
        println() // ERROR "unreachable code"
 
1482
}
 
1483
 
 
1484
var _ = func() int {
 
1485
L:
 
1486
        print(1)
 
1487
        select {
 
1488
        case <-c:
 
1489
                print(2)
 
1490
                panic("abc")
 
1491
                println() // ERROR "unreachable code"
 
1492
        case c <- 1:
 
1493
                print(2)
 
1494
                goto L
 
1495
                println() // ERROR "unreachable code"
 
1496
        }
 
1497
}
 
1498
 
 
1499
var _ = func() int {
 
1500
L:
 
1501
        print(1)
 
1502
        select {
 
1503
        case <-c:
 
1504
                print(2)
 
1505
                panic("abc")
 
1506
        case c <- 1:
 
1507
                print(2)
 
1508
                goto L
 
1509
        }
 
1510
        println() // ERROR "unreachable code"
 
1511
}
 
1512
 
 
1513
var _ = func() int {
 
1514
        print(1)
 
1515
        select {
 
1516
        case <-c:
 
1517
                print(2)
 
1518
                panic("abc")
 
1519
                println() // ERROR "unreachable code"
 
1520
        default:
 
1521
                select {}
 
1522
                println() // ERROR "unreachable code"
 
1523
        }
 
1524
}
 
1525
 
 
1526
var _ = func() int {
 
1527
        print(1)
 
1528
        select {
 
1529
        case <-c:
 
1530
                print(2)
 
1531
                panic("abc")
 
1532
        default:
 
1533
                select {}
 
1534
        }
 
1535
        println() // ERROR "unreachable code"
 
1536
}
 
1537
 
 
1538
var _ = func() int {
 
1539
        print(1)
 
1540
        select {
 
1541
        case <-c:
 
1542
                print(2)
 
1543
        }
 
1544
        println() // ok
 
1545
}
 
1546
 
 
1547
var _ = func() int {
 
1548
L:
 
1549
        print(1)
 
1550
        select {
 
1551
        case <-c:
 
1552
                print(2)
 
1553
                panic("abc")
 
1554
                goto L // ERROR "unreachable code"
 
1555
        case c <- 1:
 
1556
                print(2)
 
1557
        }
 
1558
        println() // ok
 
1559
}
 
1560
 
 
1561
var _ = func() int {
 
1562
        print(1)
 
1563
        select {
 
1564
        case <-c:
 
1565
                print(2)
 
1566
                panic("abc")
 
1567
        default:
 
1568
                print(2)
 
1569
        }
 
1570
        println() // ok
 
1571
}
 
1572
 
 
1573
var _ = func() int {
 
1574
        print(1)
 
1575
        select {
 
1576
        default:
 
1577
                break
 
1578
        }
 
1579
        println() // ok
 
1580
}
 
1581
 
 
1582
var _ = func() int {
 
1583
        print(1)
 
1584
        select {
 
1585
        case <-c:
 
1586
                print(2)
 
1587
                panic("abc")
 
1588
                break // ERROR "unreachable code"
 
1589
        }
 
1590
        println() // ok
 
1591
}
 
1592
 
 
1593
var _ = func() int {
 
1594
        print(1)
 
1595
L:
 
1596
        select {
 
1597
        case <-c:
 
1598
                print(2)
 
1599
                for {
 
1600
                        break L
 
1601
                }
 
1602
        }
 
1603
        println() // ok
 
1604
}
 
1605
 
 
1606
var _ = func() int {
 
1607
        print(1)
 
1608
L:
 
1609
        select {
 
1610
        case <-c:
 
1611
                print(2)
 
1612
                panic("abc")
 
1613
        case c <- 1:
 
1614
                print(2)
 
1615
                break L
 
1616
        }
 
1617
        println() // ok
 
1618
}
 
1619
 
 
1620
var _ = func() int {
 
1621
        print(1)
 
1622
        select {
 
1623
        case <-c:
 
1624
                print(1)
 
1625
                panic("abc")
 
1626
        default:
 
1627
                select {}
 
1628
                break // ERROR "unreachable code"
 
1629
        }
 
1630
        println() // ok
 
1631
}
 
1632
 
 
1633
var _ = func() int {
 
1634
        print(1)
 
1635
        switch x {
 
1636
        case 1:
 
1637
                print(2)
 
1638
                panic(3)
 
1639
                println() // ERROR "unreachable code"
 
1640
        default:
 
1641
                return 4
 
1642
                println() // ERROR "unreachable code"
 
1643
        }
 
1644
}
 
1645
 
 
1646
var _ = func() int {
 
1647
        print(1)
 
1648
        switch x {
 
1649
        case 1:
 
1650
                print(2)
 
1651
                panic(3)
 
1652
        default:
 
1653
                return 4
 
1654
        }
 
1655
        println() // ERROR "unreachable code"
 
1656
}
 
1657
 
 
1658
var _ = func() int {
 
1659
        print(1)
 
1660
        switch x {
 
1661
        default:
 
1662
                return 4
 
1663
                println() // ERROR "unreachable code"
 
1664
        case 1:
 
1665
                print(2)
 
1666
                panic(3)
 
1667
                println() // ERROR "unreachable code"
 
1668
        }
 
1669
}
 
1670
 
 
1671
var _ = func() int {
 
1672
        print(1)
 
1673
        switch x {
 
1674
        default:
 
1675
                return 4
 
1676
        case 1:
 
1677
                print(2)
 
1678
                panic(3)
 
1679
        }
 
1680
        println() // ERROR "unreachable code"
 
1681
}
 
1682
 
 
1683
var _ = func() int {
 
1684
        print(1)
 
1685
        switch x {
 
1686
        case 1:
 
1687
                print(2)
 
1688
                fallthrough
 
1689
        default:
 
1690
                return 4
 
1691
                println() // ERROR "unreachable code"
 
1692
        }
 
1693
}
 
1694
 
 
1695
var _ = func() int {
 
1696
        print(1)
 
1697
        switch x {
 
1698
        case 1:
 
1699
                print(2)
 
1700
                fallthrough
 
1701
        default:
 
1702
                return 4
 
1703
        }
 
1704
        println() // ERROR "unreachable code"
 
1705
}
 
1706
 
 
1707
var _ = func() int {
 
1708
        print(1)
 
1709
        switch {
 
1710
        }
 
1711
        println() // ok
 
1712
}
 
1713
 
 
1714
var _ = func() int {
 
1715
        print(1)
 
1716
        switch x {
 
1717
        case 1:
 
1718
                print(2)
 
1719
                panic(3)
 
1720
        case 2:
 
1721
                return 4
 
1722
        }
 
1723
        println() // ok
 
1724
}
 
1725
 
 
1726
var _ = func() int {
 
1727
        print(1)
 
1728
        switch x {
 
1729
        case 2:
 
1730
                return 4
 
1731
        case 1:
 
1732
                print(2)
 
1733
                panic(3)
 
1734
        }
 
1735
        println() // ok
 
1736
}
 
1737
 
 
1738
var _ = func() int {
 
1739
        print(1)
 
1740
        switch x {
 
1741
        case 1:
 
1742
                print(2)
 
1743
                fallthrough
 
1744
        case 2:
 
1745
                return 4
 
1746
        }
 
1747
        println() // ok
 
1748
}
 
1749
 
 
1750
var _ = func() int {
 
1751
        print(1)
 
1752
        switch x {
 
1753
        case 1:
 
1754
                print(2)
 
1755
                panic(3)
 
1756
        }
 
1757
        println() // ok
 
1758
}
 
1759
 
 
1760
var _ = func() int {
 
1761
        print(1)
 
1762
L:
 
1763
        switch x {
 
1764
        case 1:
 
1765
                print(2)
 
1766
                panic(3)
 
1767
                break L // ERROR "unreachable code"
 
1768
        default:
 
1769
                return 4
 
1770
        }
 
1771
        println() // ok
 
1772
}
 
1773
 
 
1774
var _ = func() int {
 
1775
        print(1)
 
1776
        switch x {
 
1777
        default:
 
1778
                return 4
 
1779
                break // ERROR "unreachable code"
 
1780
        case 1:
 
1781
                print(2)
 
1782
                panic(3)
 
1783
        }
 
1784
        println() // ok
 
1785
}
 
1786
 
 
1787
var _ = func() int {
 
1788
        print(1)
 
1789
L:
 
1790
        switch x {
 
1791
        case 1:
 
1792
                print(2)
 
1793
                for {
 
1794
                        break L
 
1795
                }
 
1796
        default:
 
1797
                return 4
 
1798
        }
 
1799
        println() // ok
 
1800
}
 
1801
 
 
1802
var _ = func() int {
 
1803
        print(1)
 
1804
        switch x.(type) {
 
1805
        case int:
 
1806
                print(2)
 
1807
                panic(3)
 
1808
                println() // ERROR "unreachable code"
 
1809
        default:
 
1810
                return 4
 
1811
                println() // ERROR "unreachable code"
 
1812
        }
 
1813
}
 
1814
 
 
1815
var _ = func() int {
 
1816
        print(1)
 
1817
        switch x.(type) {
 
1818
        case int:
 
1819
                print(2)
 
1820
                panic(3)
 
1821
        default:
 
1822
                return 4
 
1823
        }
 
1824
        println() // ERROR "unreachable code"
 
1825
}
 
1826
 
 
1827
var _ = func() int {
 
1828
        print(1)
 
1829
        switch x.(type) {
 
1830
        default:
 
1831
                return 4
 
1832
                println() // ERROR "unreachable code"
 
1833
        case int:
 
1834
                print(2)
 
1835
                panic(3)
 
1836
                println() // ERROR "unreachable code"
 
1837
        }
 
1838
}
 
1839
 
 
1840
var _ = func() int {
 
1841
        print(1)
 
1842
        switch x.(type) {
 
1843
        default:
 
1844
                return 4
 
1845
        case int:
 
1846
                print(2)
 
1847
                panic(3)
 
1848
        }
 
1849
        println() // ERROR "unreachable code"
 
1850
}
 
1851
 
 
1852
var _ = func() int {
 
1853
        print(1)
 
1854
        switch x.(type) {
 
1855
        case int:
 
1856
                print(2)
 
1857
                fallthrough
 
1858
        default:
 
1859
                return 4
 
1860
                println() // ERROR "unreachable code"
 
1861
        }
 
1862
}
 
1863
 
 
1864
var _ = func() int {
 
1865
        print(1)
 
1866
        switch x.(type) {
 
1867
        case int:
 
1868
                print(2)
 
1869
                fallthrough
 
1870
        default:
 
1871
                return 4
 
1872
        }
 
1873
        println() // ERROR "unreachable code"
 
1874
}
 
1875
 
 
1876
var _ = func() int {
 
1877
        print(1)
 
1878
        switch {
 
1879
        }
 
1880
        println() // ok
 
1881
}
 
1882
 
 
1883
var _ = func() int {
 
1884
        print(1)
 
1885
        switch x.(type) {
 
1886
        case int:
 
1887
                print(2)
 
1888
                panic(3)
 
1889
        case float64:
 
1890
                return 4
 
1891
        }
 
1892
        println() // ok
 
1893
}
 
1894
 
 
1895
var _ = func() int {
 
1896
        print(1)
 
1897
        switch x.(type) {
 
1898
        case float64:
 
1899
                return 4
 
1900
        case int:
 
1901
                print(2)
 
1902
                panic(3)
 
1903
        }
 
1904
        println() // ok
 
1905
}
 
1906
 
 
1907
var _ = func() int {
 
1908
        print(1)
 
1909
        switch x.(type) {
 
1910
        case int:
 
1911
                print(2)
 
1912
                fallthrough
 
1913
        case float64:
 
1914
                return 4
 
1915
        }
 
1916
        println() // ok
 
1917
}
 
1918
 
 
1919
var _ = func() int {
 
1920
        print(1)
 
1921
        switch x.(type) {
 
1922
        case int:
 
1923
                print(2)
 
1924
                panic(3)
 
1925
        }
 
1926
        println() // ok
 
1927
}
 
1928
 
 
1929
var _ = func() int {
 
1930
        print(1)
 
1931
L:
 
1932
        switch x.(type) {
 
1933
        case int:
 
1934
                print(2)
 
1935
                panic(3)
 
1936
                break L // ERROR "unreachable code"
 
1937
        default:
 
1938
                return 4
 
1939
        }
 
1940
        println() // ok
 
1941
}
 
1942
 
 
1943
var _ = func() int {
 
1944
        print(1)
 
1945
        switch x.(type) {
 
1946
        default:
 
1947
                return 4
 
1948
                break // ERROR "unreachable code"
 
1949
        case int:
 
1950
                print(2)
 
1951
                panic(3)
 
1952
        }
 
1953
        println() // ok
 
1954
}
 
1955
 
 
1956
var _ = func() int {
 
1957
        print(1)
 
1958
L:
 
1959
        switch x.(type) {
 
1960
        case int:
 
1961
                print(2)
 
1962
                for {
 
1963
                        break L
 
1964
                }
 
1965
        default:
 
1966
                return 4
 
1967
        }
 
1968
        println() // ok
 
1969
}
 
1970
 
 
1971
// again, but without the leading print(1).
 
1972
// testing that everything works when the terminating statement is first.
 
1973
 
 
1974
var _ = func() int {
 
1975
        println() // ok
 
1976
}
 
1977
 
 
1978
var _ = func() int {
 
1979
        return 2
 
1980
        println() // ERROR "unreachable code"
 
1981
}
 
1982
 
 
1983
var _ = func() int {
 
1984
L:
 
1985
        goto L
 
1986
        println() // ERROR "unreachable code"
 
1987
}
 
1988
 
 
1989
var _ = func() int {
 
1990
        panic(2)
 
1991
        println() // ERROR "unreachable code"
 
1992
}
 
1993
 
 
1994
// but only builtin panic
 
1995
var _ = func() int {
 
1996
        var panic = func(int) {}
 
1997
        panic(2)
 
1998
        println() // ok
 
1999
}
 
2000
 
 
2001
var _ = func() int {
 
2002
        {
 
2003
                return 2
 
2004
                println() // ERROR "unreachable code"
 
2005
        }
 
2006
}
 
2007
 
 
2008
var _ = func() int {
 
2009
        {
 
2010
                return 2
 
2011
        }
 
2012
        println() // ERROR "unreachable code"
 
2013
}
 
2014
 
 
2015
var _ = func() int {
 
2016
L:
 
2017
        {
 
2018
                goto L
 
2019
                println() // ERROR "unreachable code"
 
2020
        }
 
2021
}
 
2022
 
 
2023
var _ = func() int {
 
2024
L:
 
2025
        {
 
2026
                goto L
 
2027
        }
 
2028
        println() // ERROR "unreachable code"
 
2029
}
 
2030
 
 
2031
var _ = func() int {
 
2032
        {
 
2033
                panic(2)
 
2034
                println() // ERROR "unreachable code"
 
2035
        }
 
2036
}
 
2037
 
 
2038
var _ = func() int {
 
2039
        {
 
2040
                panic(2)
 
2041
        }
 
2042
        println() // ERROR "unreachable code"
 
2043
}
 
2044
 
 
2045
var _ = func() int {
 
2046
        return 2
 
2047
        { // ERROR "unreachable code"
 
2048
        }
 
2049
        println() // ok
 
2050
}
 
2051
 
 
2052
var _ = func() int {
 
2053
L:
 
2054
        goto L
 
2055
        { // ERROR "unreachable code"
 
2056
        }
 
2057
        println() // ok
 
2058
}
 
2059
 
 
2060
var _ = func() int {
 
2061
        panic(2)
 
2062
        { // ERROR "unreachable code"
 
2063
        }
 
2064
        println() // ok
 
2065
}
 
2066
 
 
2067
var _ = func() int {
 
2068
        {
 
2069
                return 2
 
2070
                { // ERROR "unreachable code"
 
2071
                }
 
2072
        }
 
2073
        println() // ok
 
2074
}
 
2075
 
 
2076
var _ = func() int {
 
2077
L:
 
2078
        {
 
2079
                goto L
 
2080
                { // ERROR "unreachable code"
 
2081
                }
 
2082
        }
 
2083
        println() // ok
 
2084
}
 
2085
 
 
2086
var _ = func() int {
 
2087
        {
 
2088
                panic(2)
 
2089
                { // ERROR "unreachable code"
 
2090
                }
 
2091
        }
 
2092
        println() // ok
 
2093
}
 
2094
 
 
2095
var _ = func() int {
 
2096
        {
 
2097
                return 2
 
2098
        }
 
2099
        { // ERROR "unreachable code"
 
2100
        }
 
2101
        println() // ok
 
2102
}
 
2103
 
 
2104
var _ = func() int {
 
2105
L:
 
2106
        {
 
2107
                goto L
 
2108
        }
 
2109
        { // ERROR "unreachable code"
 
2110
        }
 
2111
        println() // ok
 
2112
}
 
2113
 
 
2114
var _ = func() int {
 
2115
        {
 
2116
                panic(2)
 
2117
        }
 
2118
        { // ERROR "unreachable code"
 
2119
        }
 
2120
        println() // ok
 
2121
}