Denis Koroskin wrote:
[snip]

You took the idea slightly wrong. The default should be non-nullable,

Foo foo = null; // error
Nullable!(Foo) foo2 = null; // ok

I didn't suggest that because it would require semantically breaking all existing OOP code in D. I went with a proxy struct idea since that could conceivably be implemented in a library, and provide a stepping stone to full non-nullable by default.

[snip]
>
It also just occured to me that this would probably break scope.  Damn.


Scope is not broken. Quite the contrary, it goes on par with its meaning - scope variable can't be null-initialized (it makes no sense at least).

I was referring to the case of using a proxy struct.

scope NonNull!(Foo) bar = new Foo;

AFAIK, this wouldn't have the desired behaviour (auto-collecting bar at the end of scope.)

  -- Daniel

Reply via email to