1 /* 2 TEST_OUTPUT: 3 --- 4 fail_compilation/fail_circular.d(16): Error: circular reference to variable 'fail_circular.a1' 5 fail_compilation/fail_circular.d(17): Error: circular reference to variable 'fail_circular.a2' 6 fail_compilation/fail_circular.d(19): Error: circular reference to variable 'fail_circular.b1' 7 fail_compilation/fail_circular.d(20): Error: circular reference to variable 'fail_circular.b2' 8 fail_compilation/fail_circular.d(22): Error: circular reference to variable 'fail_circular.c1' 9 fail_compilation/fail_circular.d(23): Error: circular reference to variable 'fail_circular.c2' 10 fail_compilation/fail_circular.d(25): Error: circular initialization of variable 'fail_circular.d1' 11 fail_compilation/fail_circular.d(26): Error: circular initialization of variable 'fail_circular.d2' 12 fail_compilation/fail_circular.d(28): Error: circular initialization of variable 'fail_circular.e1' 13 fail_compilation/fail_circular.d(29): Error: circular initialization of variable 'fail_circular.e2' 14 --- 15 */ 16 auto a1 = a1; // semantic error (cannot determine expression type) 17 auto a2 = .a2; // semantic error 18 19 const b1 = b1; // semantic error 20 const b2 = .b2; // semantic error 21 22 enum c1 = c1; // semantic error 23 enum c2 = .c2; // semantic error 24 25 const int d1 = d1; // CTFE error (expression type is determined to int) 26 const int d2 = .d2; // CTFE error 27 28 enum int e1 = e1; // CTFE error 29 enum int e2 = .e2; // CTFE error 30 31 /* 32 TEST_OUTPUT: 33 --- 34 fail_compilation/fail_circular.d(47): Error: circular reference to variable 'fail_circular.a1a' 35 fail_compilation/fail_circular.d(49): Error: circular reference to variable 'fail_circular.a2a' 36 fail_compilation/fail_circular.d(52): Error: circular reference to variable 'fail_circular.b1a' 37 fail_compilation/fail_circular.d(54): Error: circular reference to variable 'fail_circular.b2a' 38 fail_compilation/fail_circular.d(57): Error: circular reference to variable 'fail_circular.c1a' 39 fail_compilation/fail_circular.d(59): Error: circular reference to variable 'fail_circular.c2a' 40 fail_compilation/fail_circular.d(62): Error: circular initialization of variable 'fail_circular.d1a' 41 fail_compilation/fail_circular.d(64): Error: circular initialization of variable 'fail_circular.d2a' 42 fail_compilation/fail_circular.d(67): Error: circular initialization of variable 'fail_circular.e1a' 43 fail_compilation/fail_circular.d(69): Error: circular initialization of variable 'fail_circular.e2a' 44 --- 45 */ 46 auto a1a = a1b; 47 auto a1b = a1a; // semantic error 48 auto a2a = a2b; 49 auto a2b = .a2a; // semantic error 50 51 const b1a = b1b; 52 const b1b = b1a; // semantic error 53 const b2a = b2b; 54 const b2b = .b2a; // semantic error 55 56 enum c1a = c1b; 57 enum c1b = c1a; // semantic error 58 enum c2a = c2b; 59 enum c2b = .c2a; // semantic error 60 61 const int d1a = d1b; 62 const int d1b = d1a; // CTFE error 63 const int d2a = d2b; 64 const int d2b = .d2a; // CTFE error 65 66 enum int e1a = e1b; 67 enum int e1b = e1a; // CTFE error 68 enum int e2a = e2b; 69 enum int e2b = .e2a; // CTFE error 70 71 /* 72 TEST_OUTPUT: 73 --- 74 fail_compilation/fail_circular.d(84): Error: circular reference to variable 'fail_circular.S1.a1' 75 fail_compilation/fail_circular.d(88): Error: circular reference to variable 'fail_circular.S2.b1' 76 fail_compilation/fail_circular.d(92): Error: circular reference to variable 'fail_circular.S3.c1' 77 fail_compilation/fail_circular.d(97): Error: circular reference to variable 'fail_circular.S4.a1a' 78 fail_compilation/fail_circular.d(102): Error: circular reference to variable 'fail_circular.S5.b1a' 79 fail_compilation/fail_circular.d(107): Error: circular reference to variable 'fail_circular.S6.c1a' 80 --- 81 */ 82 struct S1 83 { 84 static a1 = S1.a1; // semantic error 85 } 86 struct S2 87 { 88 static const b1 = S2.b1; // semantic error 89 } 90 struct S3 91 { 92 enum c1 = S3.c1; // semantic error 93 } 94 struct S4 95 { 96 static a1a = S4.a1b; 97 static a1b = S4.a1a; // semantic error 98 } 99 struct S5 100 { 101 static const b1a = S5.b1b; 102 static const b1b = S5.b1a; // semantic error 103 } 104 struct S6 105 { 106 enum c1a = S6.c1b; 107 enum c1b = S6.c1a; // semantic error 108 } 109 110 /* 111 TEST_OUTPUT: 112 --- 113 fail_compilation/fail_circular.d(123): Error: circular reference to variable 'fail_circular.C.a1' 114 fail_compilation/fail_circular.d(125): Error: circular reference to variable 'fail_circular.C.b1' 115 fail_compilation/fail_circular.d(127): Error: circular reference to variable 'fail_circular.C.c1' 116 fail_compilation/fail_circular.d(130): Error: circular reference to variable 'fail_circular.C.a1a' 117 fail_compilation/fail_circular.d(133): Error: circular reference to variable 'fail_circular.C.b1a' 118 fail_compilation/fail_circular.d(136): Error: circular reference to variable 'fail_circular.C.c1a' 119 --- 120 */ 121 class C 122 { 123 static a1 = C.a1; // semantic error 124 125 static const b1 = C.b1; // semantic error 126 127 enum c1 = C.c1; // semantic error 128 129 static a1a = C.a1b; 130 static a1b = C.a1a; // semantic error 131 132 static const b1a = C.b1b; 133 static const b1b = C.b1a; // semantic error 134 135 enum c1a = C.c1b; 136 enum c1b = C.c1a; // semantic error 137 } 138