Is this a bug? I'm very puzzled; it seems that the destructor for struct mystruct is called pre-maturely. It should be after the 'in call(): X 12, Y 0, Z 9" line, should it not?

Using DMD64 D Compiler v2.062 on OSX 10.6.8 and Linux x86_64

Output is:

$ dmd -run named14.d
start of main
in mystruct dtor: X 0, Y 0, Z 0
top of with block
in call(): X 12, Y 0, Z 9
end of main

//code:
import std.stdio;

void main(string[] arg) {
  writeln("start of main ");
  with(mystruct()) {
       writeln("top of with block");
       x=12;
       z=9;
       call();
  }
  writeln("end of main ");
}

struct mystruct
{
   int x, y, z;
   ~this() {
      writefln("in mystruct dtor: X %s, Y %s, Z %s", x, y, z );
    }

    string call() {
      writefln("in call(): X %s, Y %s, Z %s", x, y, z );
      return "yo";
    }
}

Reply via email to