int foo() { int[] arr = new int[1]; return arr[0]; } static assert(foo() == 0); void main() {} dmd 2.043 prints: test1.d(5): Error: static assert (null == 0) is not evaluatable at compile time
This patch also fixes bug 4052 which has the same root cause. PATCH (svn 497): interpret.c, NewExp::interpret, line 1579. return createBlockDuplicatedArrayLiteral(newtype, - newtype->defaultInitLiteral(), lenExpr->toInteger()); + ((TypeArray *)newtype)->next->defaultInitLiteral(), + lenExpr->toInteger()); TEST CASES FOR TEST SUITE: int bug4078() { int[] arr = new int[1]; return arr[0]; } static assert(bug4078() == 0); int bug4052() { int[] arr = new int[1]; int s; foreach (x; arr) s += x; foreach (x; arr) s += x * x; return 4052; } static assert(bug4052() == 4052);
http://www.dsource.org/projects/dmd/changeset/507