https://issues.dlang.org/show_bug.cgi?id=18057
--- Comment #2 from Iain Buclaw <ibuc...@gdcproject.org> --- In this instance, it should detect and guard against stack overflow, because the value of the initializer is indeed recursive. Consider the following, that would cause a stack overflow at runtime: --- struct RBNode { RBNode *copy; this(int num) { this.copy = new RBNode(num++); } } --- --