On Friday, 18 October 2013 at 19:46:44 UTC, Max Samukha wrote:
On Friday, 18 October 2013 at 19:28:35 UTC, Maxim Fomin wrote:
On Friday, 18 October 2013 at 18:59:46 UTC, Andrei Alexandrescu wrote:

I think one good compromise is to stick with the exact amount of flow control we currently have in constructors (which is primitive but quite adequate), and use that creatively. It's already implemented and works, so the implementation costs of applying it to other cases should be low.

Andrei

Do you mean preventing calling constructor (from another constructor) within one control branch? May be this will be case #13.

import std.stdio;

extern(C) void _D4main1A6__ctorMFiZC4main1A(A a, int i);

class A
{
  this(int i) { writeln("reached"); }
  this()
  {
     int i = 1;
     //if (i)
     //   this(i); // Error: one path skips constructor
     if (i)
        _D4main1A6__ctorMFiZC4main1A(this, i);
     if (i)
        auto dg = __traits(getOverloads, this, "__ctor")[0](i);
  }
}

void main()
{
  new A;
}

Wanna talk about what can be done with reflection in "safe" C#?

You are free to present horrible bugs of "unsafe" C#, but I bet
they are far, very far to DMD bugs/D design issues of "safe" D.
(By the way, I don't see why the code above provoked you to C#
talks).

Reply via email to