Suggestion: "fix" assert(obj)
Kristian Kilpi
kjkilpi at gmail.com
Thu Jun 14 01:55:39 PDT 2007
This issue has been proposed before. Well, I think it's the time suggest
it again...
The problem is that
assert(obj);
does not first check if 'obj' is null. It just executes the object's
invariants.
So, one should usually write instead:
assert(obj !is null);
assert(obj);
In addition, if you write something like this
assert(val > 0 && obj);
, then it's checked that 'obj' is not null (instead of running its
invariants).
I propose that the two previous cases should be combined.
This won't broke any existing code. Actually, it should make it more bug
free.
That is, if an object is used inside an assert (anywhere inside it), then
first it's checked that the object is not null, and then its invariants
are run:
assert(obj); //== "assert(obj !is null && obj.runInvariants());"
assert(val > 0 && obj); //== "assert(val > 0 && obj !is null &&
obj.runInvariants());"
More information about the Digitalmars-d
mailing list