Timon Gehr:

The notation 'T?' is normally used for a nullable type.

Right. that's why I have suggested a trailing "@":
http://d.puremagic.com/issues/show_bug.cgi?id=4571

------------------------

Namespace:

void foo(Object? o) {
        // do something with o
}
[/code]
                
will convert into

[code]
void foo(Object o, string filename = __FILE__, uint line =
__LINE__) in {
        if (o is null) throw new Exception("Object is null.", filename,
line);
} body {
        // do something with o
}
[/code]

Object@ is a type, so if you write:

void foo(Object@ o) {...

It means the compiler statically refuses you to give a nullable type to foo. So inside foo there is no need for a run time test.

Good work :-)

Bye,
bearophile

Reply via email to