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.
8
// This file contains tests for the dead code checker.
17
func external() int // ok
29
println() // ERROR "unreachable code"
36
println() // ERROR "unreachable code"
42
println() // ERROR "unreachable code"
45
// but only builtin panic
47
var panic = func(int) {}
57
println() // ERROR "unreachable code"
67
println() // ERROR "unreachable code"
75
println() // ERROR "unreachable code"
86
println() // ERROR "unreachable code"
100
println() // ERROR "unreachable code"
109
println() // ERROR "unreachable code"
115
{ // ERROR "unreachable code"
123
{ // ERROR "unreachable code"
130
{ // ERROR "unreachable code"
138
{ // ERROR "unreachable code"
148
{ // ERROR "unreachable code"
157
{ // ERROR "unreachable code"
167
{ // ERROR "unreachable code"
177
{ // ERROR "unreachable code"
186
{ // ERROR "unreachable code"
197
println() // ERROR "unreachable code"
208
println() // ERROR "unreachable code"
223
println() // ERROR "unreachable code"
226
// if-else chain missing final else is not okay, even if the
227
// conditions cover every possible case.
264
println() // ERROR "unreachable code"
273
println() // ERROR "unreachable code"
280
println() // ERROR "unreachable code"
289
println() // ERROR "unreachable code"
301
println() // ERROR "unreachable code"
316
break // ERROR "unreachable code"
386
println() // ERROR "unreachable code"
395
println() // ERROR "unreachable code"
406
println() // ERROR "unreachable code"
416
println() // ERROR "unreachable code"
428
println() // ERROR "unreachable code"
438
println() // ERROR "unreachable code"
442
println() // ERROR "unreachable code"
457
println() // ERROR "unreachable code"
466
println() // ERROR "unreachable code"
469
println() // ERROR "unreachable code"
482
println() // ERROR "unreachable code"
501
goto L // ERROR "unreachable code"
535
break // ERROR "unreachable code"
575
break // ERROR "unreachable code"
586
println() // ERROR "unreachable code"
589
println() // ERROR "unreachable code"
602
println() // ERROR "unreachable code"
610
println() // ERROR "unreachable code"
614
println() // ERROR "unreachable code"
627
println() // ERROR "unreachable code"
638
println() // ERROR "unreachable code"
651
println() // ERROR "unreachable code"
714
break L // ERROR "unreachable code"
726
break // ERROR "unreachable code"
755
println() // ERROR "unreachable code"
758
println() // ERROR "unreachable code"
771
println() // ERROR "unreachable code"
779
println() // ERROR "unreachable code"
783
println() // ERROR "unreachable code"
796
println() // ERROR "unreachable code"
807
println() // ERROR "unreachable code"
820
println() // ERROR "unreachable code"
883
break L // ERROR "unreachable code"
895
break // ERROR "unreachable code"
918
// again, but without the leading print(1).
919
// testing that everything works when the terminating statement is first.
927
println() // ERROR "unreachable code"
933
println() // ERROR "unreachable code"
938
println() // ERROR "unreachable code"
941
// but only builtin panic
943
var panic = func(int) {}
951
println() // ERROR "unreachable code"
959
println() // ERROR "unreachable code"
966
println() // ERROR "unreachable code"
975
println() // ERROR "unreachable code"
981
println() // ERROR "unreachable code"
989
println() // ERROR "unreachable code"
994
{ // ERROR "unreachable code"
1002
{ // ERROR "unreachable code"
1009
{ // ERROR "unreachable code"
1017
{ // ERROR "unreachable code"
1027
{ // ERROR "unreachable code"
1036
{ // ERROR "unreachable code"
1046
{ // ERROR "unreachable code"
1056
{ // ERROR "unreachable code"
1065
{ // ERROR "unreachable code"
1070
// again, with func literals
1072
var _ = func() int {
1075
var _ = func() int {
1079
var _ = func() int {
1082
println() // ERROR "unreachable code"
1085
var _ = func() int {
1089
println() // ERROR "unreachable code"
1092
var _ = func() int {
1095
println() // ERROR "unreachable code"
1098
// but only builtin panic
1099
var _ = func() int {
1100
var panic = func(int) {}
1106
var _ = func() int {
1110
println() // ERROR "unreachable code"
1115
var _ = func() int {
1120
println() // ERROR "unreachable code"
1123
var _ = func() int {
1128
println() // ERROR "unreachable code"
1133
var _ = func() int {
1139
println() // ERROR "unreachable code"
1142
var _ = func() int {
1149
var _ = func() int {
1153
println() // ERROR "unreachable code"
1157
var _ = func() int {
1162
println() // ERROR "unreachable code"
1165
var _ = func() int {
1168
{ // ERROR "unreachable code"
1172
var _ = func() int {
1176
{ // ERROR "unreachable code"
1180
var _ = func() int {
1183
{ // ERROR "unreachable code"
1187
var _ = func() int {
1191
{ // ERROR "unreachable code"
1196
var _ = func() int {
1201
{ // ERROR "unreachable code"
1206
var _ = func() int {
1210
{ // ERROR "unreachable code"
1215
var _ = func() int {
1220
{ // ERROR "unreachable code"
1224
var _ = func() int {
1230
{ // ERROR "unreachable code"
1234
var _ = func() int {
1239
{ // ERROR "unreachable code"
1243
var _ = func() int {
1250
println() // ERROR "unreachable code"
1253
var _ = func() int {
1261
println() // ERROR "unreachable code"
1264
var _ = func() int {
1276
println() // ERROR "unreachable code"
1279
// if-else chain missing final else is not okay, even if the
1280
// conditions cover every possible case.
1282
var _ = func() int {
1286
} else if x != nil {
1292
var _ = func() int {
1300
var _ = func() int {
1313
var _ = func() int {
1317
println() // ERROR "unreachable code"
1320
var _ = func() int {
1326
println() // ERROR "unreachable code"
1329
var _ = func() int {
1333
println() // ERROR "unreachable code"
1338
var _ = func() int {
1342
println() // ERROR "unreachable code"
1347
var _ = func() int {
1354
println() // ERROR "unreachable code"
1357
var _ = func() int {
1365
var _ = func() int {
1369
break // ERROR "unreachable code"
1374
var _ = func() int {
1384
var _ = func() int {
1391
var _ = func() int {
1400
var _ = func() int {
1410
var _ = func() int {
1417
var _ = func() int {
1426
var _ = func() int {
1436
var _ = func() int {
1439
println() // ERROR "unreachable code"
1442
var _ = func() int {
1448
println() // ERROR "unreachable code"
1452
var _ = func() int {
1459
println() // ERROR "unreachable code"
1462
var _ = func() int {
1469
println() // ERROR "unreachable code"
1473
var _ = func() int {
1481
println() // ERROR "unreachable code"
1484
var _ = func() int {
1491
println() // ERROR "unreachable code"
1495
println() // ERROR "unreachable code"
1499
var _ = func() int {
1510
println() // ERROR "unreachable code"
1513
var _ = func() int {
1519
println() // ERROR "unreachable code"
1522
println() // ERROR "unreachable code"
1526
var _ = func() int {
1535
println() // ERROR "unreachable code"
1538
var _ = func() int {
1547
var _ = func() int {
1554
goto L // ERROR "unreachable code"
1561
var _ = func() int {
1573
var _ = func() int {
1582
var _ = func() int {
1588
break // ERROR "unreachable code"
1593
var _ = func() int {
1606
var _ = func() int {
1620
var _ = func() int {
1628
break // ERROR "unreachable code"
1633
var _ = func() int {
1639
println() // ERROR "unreachable code"
1642
println() // ERROR "unreachable code"
1646
var _ = func() int {
1655
println() // ERROR "unreachable code"
1658
var _ = func() int {
1663
println() // ERROR "unreachable code"
1667
println() // ERROR "unreachable code"
1671
var _ = func() int {
1680
println() // ERROR "unreachable code"
1683
var _ = func() int {
1691
println() // ERROR "unreachable code"
1695
var _ = func() int {
1704
println() // ERROR "unreachable code"
1707
var _ = func() int {
1714
var _ = func() int {
1726
var _ = func() int {
1738
var _ = func() int {
1750
var _ = func() int {
1760
var _ = func() int {
1767
break L // ERROR "unreachable code"
1774
var _ = func() int {
1779
break // ERROR "unreachable code"
1787
var _ = func() int {
1802
var _ = func() int {
1808
println() // ERROR "unreachable code"
1811
println() // ERROR "unreachable code"
1815
var _ = func() int {
1824
println() // ERROR "unreachable code"
1827
var _ = func() int {
1832
println() // ERROR "unreachable code"
1836
println() // ERROR "unreachable code"
1840
var _ = func() int {
1849
println() // ERROR "unreachable code"
1852
var _ = func() int {
1860
println() // ERROR "unreachable code"
1864
var _ = func() int {
1873
println() // ERROR "unreachable code"
1876
var _ = func() int {
1883
var _ = func() int {
1895
var _ = func() int {
1907
var _ = func() int {
1919
var _ = func() int {
1929
var _ = func() int {
1936
break L // ERROR "unreachable code"
1943
var _ = func() int {
1948
break // ERROR "unreachable code"
1956
var _ = func() int {
1971
// again, but without the leading print(1).
1972
// testing that everything works when the terminating statement is first.
1974
var _ = func() int {
1978
var _ = func() int {
1980
println() // ERROR "unreachable code"
1983
var _ = func() int {
1986
println() // ERROR "unreachable code"
1989
var _ = func() int {
1991
println() // ERROR "unreachable code"
1994
// but only builtin panic
1995
var _ = func() int {
1996
var panic = func(int) {}
2001
var _ = func() int {
2004
println() // ERROR "unreachable code"
2008
var _ = func() int {
2012
println() // ERROR "unreachable code"
2015
var _ = func() int {
2019
println() // ERROR "unreachable code"
2023
var _ = func() int {
2028
println() // ERROR "unreachable code"
2031
var _ = func() int {
2034
println() // ERROR "unreachable code"
2038
var _ = func() int {
2042
println() // ERROR "unreachable code"
2045
var _ = func() int {
2047
{ // ERROR "unreachable code"
2052
var _ = func() int {
2055
{ // ERROR "unreachable code"
2060
var _ = func() int {
2062
{ // ERROR "unreachable code"
2067
var _ = func() int {
2070
{ // ERROR "unreachable code"
2076
var _ = func() int {
2080
{ // ERROR "unreachable code"
2086
var _ = func() int {
2089
{ // ERROR "unreachable code"
2095
var _ = func() int {
2099
{ // ERROR "unreachable code"
2104
var _ = func() int {
2109
{ // ERROR "unreachable code"
2114
var _ = func() int {
2118
{ // ERROR "unreachable code"