Acces Violation: assert with null instance
Stewart Gordon
smjg_1998 at yahoo.com
Wed Jan 10 18:50:47 PST 2007
Frits van Bommel wrote:
> Stewart Gordon wrote:
>> For some strange reason, assert on an object reference checks that the
>> invariants are satisfied instead of that the reference isn't null.
>> There's nothing to this effect in the spec, so I don't know how it
>> came about. While it may be useful, it certainly shouldn't do it
>> _instead of_ checking it isn't null.
>
> As I commented recently when this bug was added to bugzilla, it's in the
> spec. It's just not where you'd expect it.
What is the Bugzilla issue number? I can't seem to find it.
> It's noted at http://www.digitalmars.com/d/class.html#invariants (the
> section on class invariants) instead of in the section on asserts.
> I've since added a warning about this on the comments page for the page
> containing the section on asserts.
>
> Also, the null check *is* in the code, but when Phobos is compiled in
> release mode (which the pre-compiled version is) the assert isn't
> performed...
"The invariant can be checked when a class object is the argument to an
assert() expression, as:"
I see this as giving an _additional_ use of assert, something that
assert on a class object may do as an extra. The general contract of
assert is supposed to remain, and the fact that out of the box it
doesn't certainly constitutes a bug, at least IMO.
Stewart.
More information about the Digitalmars-d-bugs
mailing list