This is a test case from bug 4269, which was not fixed by the recent commit to mitigate 4269. Note also that 4269 was a regression in 2.031, this one is far more recent. ============================== static if(is(typeof(X3.init))) {} void X3(T3) { } ============================== ICE(glue.c) for 2.047 on. It generated an error on 2.045 and earlier. (On 2.046 it silently generated bad code). ========================================== Comment from yebblies: The crash is due to an error in a parameter type not resulting in TypeFunction::semantic returning terror. (Or at least, that and the fact it reaches code generation due to this bug.) I swear I fixed this in a pull request last year, but it must've been part of something that never got accepted.
The regression and ice part of this bug is the same as issue 4269. The rest is the same as issue 7462 - errors in the argument/return types of functions are not propagated to the function type. I don't know how it was introduced but these are the causes. *** This issue has been marked as a duplicate of issue 7462 ***