On Wednesday, 21 November 2018 at 10:47:35 UTC, NoMoreBugs wrote:
On Monday, 19 November 2018 at 21:39:22 UTC, Adam D. Ruppe wrote:
On Monday, 19 November 2018 at 21:23:31 UTC, Jordi Gutiérrez Hermoso wrote:
What's the reasoning for allowing this?

The mistake is immediately obvious when you run the program, so I just don't see it as a big deal. You lose a matter of seconds, realize the mistake, and fix it.

What is your proposal for handling it? The ones usually put around are kinda a pain to use.

How hard would it be, really, for the compiler to determine that c was never assigned to, and produce a compile time error:

"c is never assigned to, and will always have its default value null"

That doesn't sound that hard to me.

Am I misled, or isn't this impossible by design?

´´´
import std.stdio;
import std.random;

class C
{
        size_t dummy;
        final void baz()
        {
                if(this is null)
                {
                        writeln(42);
                }
                else
                {
                        writeln(dummy);
                }
        }
}
void main()
{
        C c;
        c.foo;
}

void foo(ref C c)
{
        if(uniform01 < 0.5)
        {
                c = new C();
                c.dummy = unpredictableSeed;
        }
        c.baz;
}
´´´

Reply via email to