2013/5/11 Henning Pohl <henn...@still-hidden.de>

> a) In the so-called "whole dtor" which calls the dtors of all members
> including the dtor declared (if any). The attributes of the "whole dtor"
> are deduced.
>
> b) Everything takes place in the dtor declared (if any). If the dtor is
> pure/nothrow/safe, it is guaranteed that the object can be destructed
> purely/without throwing/safely. This will break existing code.
>
> -----
> struct S { ~this() { } }
> struct SX { S s; pure ~this() { } }
> -----
>
> a) Compiles.
> b) Error: S.s.~this is impure
>
> Both behaviors are available on github:
> a) 
> https://github.com/D-**Programming-Language/dmd/pull/**2006<https://github.com/D-Programming-Language/dmd/pull/2006>
> b) 
> https://github.com/D-**Programming-Language/dmd/pull/**2003<https://github.com/D-Programming-Language/dmd/pull/2003>
>
> You can apply this to postblit, too.
>

Until 2.062, dmd has been behaved as a) for destructors, but current git
head is accidentally changed to b).
I think it is a regression.

Pull#2006 will change back the behavior to a), but pull#2003 doesn't.

Kenji Hara

Reply via email to