1 /*
2 TEST_OUTPUT:
3 ---
4 fail_compilation/ice15172.d(14): Error: constructor ice15172.ThreadError.this no match for implicit super() call in constructor
5 ---
6 */
7 
8 // 1. ClassDeclaration.semantic
9 class ThreadError : Error
10 {
11     // 2. FuncDeclaration.semantic
12     // 4. FuncDeclaration.semantic3
13     //    --> error happens
this(string)14     this(string)
15     {
16     }
17 }
18 
19 // 3. FuncDeclaration.semantic
20 // 5. FuncDeclaration.semantic3
onThreadError()21 void onThreadError()
22 {
23     // 6. NewExp.semantic
24     //    --> cd.members.errors == false, cd.members.semantic3Errors == true
25     //    BUT, The ThreadError class constructor is not a template function, so
26     //    the errors inside its function body won't be associated with the validness of this NewExp.
27     //    Therefore, converting the semantic3Error to ErrorExp is not correct.
28     // 7. ctfeInterpret
29     //    Finally, FuncDeclaration::interpret may encounter a function which is semantic3Errors == true. So
30     //    7a. functionSemantic3() should return false if semantic3Errors is true.
31     //    7b. the function body errors may not happen during ctfeInterpret call and global.errors could be unincremented.
32     __gshared auto ThreadError = new ThreadError(null);
33 }
34