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
Short-circuit evaluation is always enabled. http://digitalmars.com/d/1.0/expression.html#OrOrExpression "If the left operand, converted to type bool, evaluates to true, then the right operand is not evaluated."