What is the purpose of -preview=dtorfields?

Simen Kjærås simen.kjaras at gmail.com
Mon Aug 31 20:49:21 UTC 2020


On Monday, 31 August 2020 at 20:22:02 UTC, Per Nordlöw wrote:
> I'd appreciate if somebody elaborated a bit on the purpose of 
> the compiler flag
>
>     -preview=dtorfields       destruct fields of partially 
> constructed objects

With this code:

struct S1 {
     this(int) {}
     ~this() {
         import std.stdio;
         writeln("~S1");
     }
}

struct S2 {
     S1 s1;
     S1 s2;
     this(int i) {
         s1 = S1(0);
         throw new Exception("");
         s2 = S1(0);
     }
}

void main() {
     S2 a = S2(2);
}

The current behavior is to not destruct the s1 and s2 fields, but 
-preview=dtorfields ensures they will be destructed. I kinda 
expected only s1 to be destructed above, but s2 follows it down 
the drain.

--
   Simen


More information about the Digitalmars-d mailing list