1 alias noreturn = typeof(*null);
2 
3 extern (C) noreturn exit();
4 
5 /*****************************************/
6 
testf(int i)7 bool testf(int i)
8 {
9     return i && assert(0);
10 }
11 
testt(int i)12 bool testt(int i)
13 {
14     return i || assert(0);
15 }
16 
testa(int i)17 int testa(int i)
18 {
19     if (i && exit())
20         return i + 1;
21     return i - 1;
22 }
23 
testb(int i)24 int testb(int i)
25 {
26     if (i || exit())
27         return i + 1;
28     return i - 1;
29 }
30 
test1()31 void test1()
32 {
33     assert(testf(0) == false);
34     assert(testt(1) == true);
35 
36     assert(testa(0) == -1);
37     assert(testb(3) == 4);
38 }
39 
40 /*****************************************/
41 
exit1()42 noreturn exit1() { assert(0); }
exit2()43 noreturn exit2() { assert(0); }
44 
45 
heli1(int i)46 int heli1(int i)
47 {
48     return i ? exit1() : i - 1;
49 }
50 
heli2(int i)51 int heli2(int i)
52 {
53     return i ? i - 1 : exit1();
54 }
55 
heli3(int i)56 noreturn heli3(int i)
57 {
58     return i ? exit1() : exit2();
59 }
60 
test2()61 void test2()
62 {
63     assert(heli1(0) == -1);
64     assert(heli2(1) == 0);
65 }
66 
67 /*****************************************/
68 
main()69 int main()
70 {
71     test1();
72     test2();
73     return 0;
74 }
75