Keyword to avoid not null references

Adam D. Ruppe destructionator at gmail.com
Mon Apr 23 07:30:08 PDT 2012


On Sunday, 22 April 2012 at 10:58:10 UTC, Namespace wrote:
> If i got you right on git, you wouldn't allow something like 
> this:
> NotNull!(Foo) f = new Foo(); and instead you want that 
> everybody writes
> NotNull!(Foo) f = assumeNotNull(new Foo);
> Is that correct?

No, I think that's too annoying, though I also think
it is more correct.

But my plan is to allow NotNull!Foo f = new Foo().
(This is a constructor, so removing opAssign doesn't change
this.)

> there because of the explicit conversion constraint from Foo 
> into NotNull!(Foo) which i described in my post above.

That explicit conversion is one of the features of the
type - it means the compiler will remind you when you
missed something.

There's really little benefit to checking at a function
automatically. If you need that, you can always assert for
it in an in{} contract.

Or just use it and let the debugger take care of the rest.
I think a debug build on Windows even gives a stack trace
on null deref, but I'm not sure.



The big benefit with not null types is making sure you don't
store a null somewhere, since that's a lot harder to track
down.


More information about the Digitalmars-d-learn mailing list