digitalmars.D.learn - minimal evaluation
- Qian Xu <quian.xu stud.tu-ilmenau.de> Apr 06 2009
- Qian Xu <quian.xu stud.tu-ilmenau.de> Apr 06 2009
- torhu <no spam.invalid> Apr 06 2009
- Qian Xu <quian.xu stud.tu-ilmenau.de> Apr 06 2009
Hi All,
Is minimal evaluation always enabled in D?
I want to write a function IsNull(), so that I can check the precondition as
follows:
if (isNull(foo) ||
isNull(foo.getBar) ||
isNull(foo.getBar.getBar2)
{
return false;
}
// normal code goes here
If an argument is null, the IsNull() will return false. Internally it will
be logged to console as well.
But I am not sure, if dmd-compiler generates code without minimal evaluation
in some cases. If minimal evaluation is not always enabled. I cannot do
precodition check in my way.
--Qian
Apr 06 2009
if (isNull(foo) || isNull(foo.getBar) || isNull(foo.getBar.getBar2) { return false; }
Update: If minimal evaluation is not always enabled, and foo.getBar is NULL. I will get a segfault when evaluating foo.getBar.getBar2.
Apr 06 2009
On 06.04.2009 13:30, Qian Xu wrote:Hi All, Is minimal evaluation always enabled in D? I want to write a function IsNull(), so that I can check the precondition as follows: if (isNull(foo) || isNull(foo.getBar) || isNull(foo.getBar.getBar2) { return false; } // normal code goes here If an argument is null, the IsNull() will return false. Internally it will be logged to console as well. But I am not sure, if dmd-compiler generates code without minimal evaluation in some cases. If minimal evaluation is not always enabled. I cannot do precodition check in my way. --Qian
If you mean short-circuit evalutation, I'm pretty sure that's always what the compiler does.
Apr 06 2009
torhu wrote:If you mean short-circuit evalutation, I'm pretty sure that's always what the compiler does.
Thanks. Somebody posted this link: http://digitalmars.com/d/1.0/expression.html#OrOrExpression
Apr 06 2009









Qian Xu <quian.xu stud.tu-ilmenau.de> 