From: http://forum.dlang.org/thread/wqxziknnhlyoyetwmtyu@forum.dlang.org ===================================== I get this error: ---- /d701/f223.d(11): Error: pure function 'f223.getA' cannot call impure function 'f223.A.~this' ---- with this code: ---- import std.stdio; struct A { public: ~this() { writeln("DTor"); } } A getA() pure nothrow { return A(); } void main() { A a = getA(); writeln("end of main"); } ---- But without pure and nothrow I get this output: ---- end of main DTor ---- Why the compiler thinks that the function should/could call A::~this?
https://github.com/D-Programming-Language/dmd/pull/2677
Commits pushed to master at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/8d2ac819d9c71951e1adabaf0ce1c0e5073d8e91 fix Issue 11286 - Impure dtor makes "cannot call impure function" error, although it won't actually be called. https://github.com/D-Programming-Language/dmd/commit/d9a2adb1bda4fa146ed3aa4acbce45c6be1ffdc0 Merge pull request #2677 from 9rnsr/fix11286 Issue 11286 - Impure dtor makes "cannot call impure function" error, although it won't actually be called.