This program performs a memory allocation, so it can throw an out of memory error. But such exceptions are now meant to be not recoverable, so I think allocating memory can now be done in nothrow functions too. But currently with the following code the compiler prints at compile time: test2.d(1): Error: function test2.foo 'foo' is nothrow yet may throw nothrow void foo() { auto a = new int[5]; } void main() {}
similar cases: does no compile void foo1 () nothrow { auto x = [4]; } compiles ok void foo2 () nothrow { int[] x; x ~= 4; }
Fixed svn 726.