1 // Copyright 2020 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.
7 // This file produces masses of errors from the type checker due to
8 // missing returns statements and other things.
15 func external() int // ok
27 // want "unreachable code"
34 // want "unreachable code"
40 // want "unreachable code"
43 // but only builtin panic
45 var panic = func(int) {}
55 // want "unreachable code"
65 // want "unreachable code"
73 // want "unreachable code"
84 // want "unreachable code"
98 // want "unreachable code"
107 // want "unreachable code"
186 // want "unreachable code"
197 // want "unreachable code"
212 // want "unreachable code"
215 // if-else chain missing final else is not okay, even if the
216 // conditions cover every possible case.
253 // want "unreachable code"
262 // want "unreachable code"
269 // want "unreachable code"
278 // want "unreachable code"
290 // want "unreachable code"
305 // want "unreachable code"
375 // want "unreachable code"
384 // want "unreachable code"
395 // want "unreachable code"
405 // want "unreachable code"
417 // want "unreachable code"
427 // want "unreachable code"
431 // want "unreachable code"
446 // want "unreachable code"
455 // want "unreachable code"
458 // want "unreachable code"
471 // want "unreachable code"
490 // want "unreachable code"
524 // want "unreachable code"
564 // want "unreachable code"
575 // want "unreachable code"
578 // want "unreachable code"
591 // want "unreachable code"
599 // want "unreachable code"
603 // want "unreachable code"
616 // want "unreachable code"
627 // want "unreachable code"
640 // want "unreachable code"
703 // want "unreachable code"
715 // want "unreachable code"
744 // want "unreachable code"
747 // want "unreachable code"
760 // want "unreachable code"
768 // want "unreachable code"
772 // want "unreachable code"
785 // want "unreachable code"
796 // want "unreachable code"
809 // want "unreachable code"
872 // want "unreachable code"
884 // want "unreachable code"
907 // again, but without the leading print(1).
908 // testing that everything works when the terminating statement is first.
916 // want "unreachable code"
922 // want "unreachable code"
927 // want "unreachable code"
930 // but only builtin panic
932 var panic = func(int) {}
940 // want "unreachable code"
948 // want "unreachable code"
955 // want "unreachable code"
964 // want "unreachable code"
970 // want "unreachable code"
978 // want "unreachable code"
1050 // again, with func literals
1052 var _ = func() int {
1055 var _ = func() int {
1059 var _ = func() int {
1062 // want "unreachable code"
1065 var _ = func() int {
1069 // want "unreachable code"
1072 var _ = func() int {
1075 // want "unreachable code"
1078 // but only builtin panic
1079 var _ = func() int {
1080 var panic = func(int) {}
1086 var _ = func() int {
1090 // want "unreachable code"
1095 var _ = func() int {
1100 // want "unreachable code"
1103 var _ = func() int {
1108 // want "unreachable code"
1113 var _ = func() int {
1119 // want "unreachable code"
1122 var _ = func() int {
1129 var _ = func() int {
1133 // want "unreachable code"
1137 var _ = func() int {
1142 // want "unreachable code"
1145 var _ = func() int {
1151 var _ = func() int {
1158 var _ = func() int {
1164 var _ = func() int {
1172 var _ = func() int {
1181 var _ = func() int {
1189 var _ = func() int {
1197 var _ = func() int {
1206 var _ = func() int {
1214 var _ = func() int {
1221 // want "unreachable code"
1224 var _ = func() int {
1232 // want "unreachable code"
1235 var _ = func() int {
1247 // want "unreachable code"
1250 // if-else chain missing final else is not okay, even if the
1251 // conditions cover every possible case.
1253 var _ = func() int {
1257 } else if x != nil {
1263 var _ = func() int {
1271 var _ = func() int {
1284 var _ = func() int {
1288 // want "unreachable code"
1291 var _ = func() int {
1297 // want "unreachable code"
1300 var _ = func() int {
1304 // want "unreachable code"
1309 var _ = func() int {
1313 // want "unreachable code"
1318 var _ = func() int {
1325 // want "unreachable code"
1328 var _ = func() int {
1336 var _ = func() int {
1340 // want "unreachable code"
1345 var _ = func() int {
1355 var _ = func() int {
1362 var _ = func() int {
1371 var _ = func() int {
1381 var _ = func() int {
1388 var _ = func() int {
1397 var _ = func() int {
1407 var _ = func() int {
1410 // want "unreachable code"
1413 var _ = func() int {
1419 // want "unreachable code"
1423 var _ = func() int {
1430 // want "unreachable code"
1433 var _ = func() int {
1440 // want "unreachable code"
1444 var _ = func() int {
1452 // want "unreachable code"
1455 var _ = func() int {
1462 // want "unreachable code"
1466 // want "unreachable code"
1470 var _ = func() int {
1481 // want "unreachable code"
1484 var _ = func() int {
1490 // want "unreachable code"
1493 // want "unreachable code"
1497 var _ = func() int {
1506 // want "unreachable code"
1509 var _ = func() int {
1518 var _ = func() int {
1525 // want "unreachable code"
1532 var _ = func() int {
1544 var _ = func() int {
1553 var _ = func() int {
1559 // want "unreachable code"
1564 var _ = func() int {
1577 var _ = func() int {
1591 var _ = func() int {
1599 // want "unreachable code"
1604 var _ = func() int {
1610 // want "unreachable code"
1613 // want "unreachable code"
1617 var _ = func() int {
1626 // want "unreachable code"
1629 var _ = func() int {
1634 // want "unreachable code"
1638 // want "unreachable code"
1642 var _ = func() int {
1651 // want "unreachable code"
1654 var _ = func() int {
1662 // want "unreachable code"
1666 var _ = func() int {
1675 // want "unreachable code"
1678 var _ = func() int {
1685 var _ = func() int {
1697 var _ = func() int {
1709 var _ = func() int {
1721 var _ = func() int {
1731 var _ = func() int {
1738 // want "unreachable code"
1745 var _ = func() int {
1750 // want "unreachable code"
1758 var _ = func() int {
1773 var _ = func() int {
1779 // want "unreachable code"
1782 // want "unreachable code"
1786 var _ = func() int {
1795 // want "unreachable code"
1798 var _ = func() int {
1803 // want "unreachable code"
1807 // want "unreachable code"
1811 var _ = func() int {
1820 // want "unreachable code"
1823 var _ = func() int {
1831 // want "unreachable code"
1835 var _ = func() int {
1844 // want "unreachable code"
1847 var _ = func() int {
1854 var _ = func() int {
1866 var _ = func() int {
1878 var _ = func() int {
1890 var _ = func() int {
1900 var _ = func() int {
1907 // want "unreachable code"
1914 var _ = func() int {
1919 // want "unreachable code"
1927 var _ = func() int {
1942 // again, but without the leading print(1).
1943 // testing that everything works when the terminating statement is first.
1945 var _ = func() int {
1949 var _ = func() int {
1951 // want "unreachable code"
1954 var _ = func() int {
1957 // want "unreachable code"
1960 var _ = func() int {
1962 // want "unreachable code"
1965 // but only builtin panic
1966 var _ = func() int {
1967 var panic = func(int) {}
1972 var _ = func() int {
1975 // want "unreachable code"
1979 var _ = func() int {
1983 // want "unreachable code"
1986 var _ = func() int {
1990 // want "unreachable code"
1994 var _ = func() int {
1999 // want "unreachable code"
2002 var _ = func() int {
2005 // want "unreachable code"
2009 var _ = func() int {
2013 // want "unreachable code"
2016 var _ = func() int {
2022 var _ = func() int {
2029 var _ = func() int {
2035 var _ = func() int {
2043 var _ = func() int {
2052 var _ = func() int {
2060 var _ = func() int {
2068 var _ = func() int {
2077 var _ = func() int {
2086 // goto without label used to panic
2091 // Empty switch tag with non-bool case value used to panic.