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