On 7/7/17 9:38 AM, Stefan Koch wrote:
On Friday, 7 July 2017 at 13:34:20 UTC, Steven Schveighoffer wrote:
On 7/7/17 4:21 AM, Nicholas Wilson wrote:
The compiler seems to inset an `assert(this !is null, "null this");`
into my struct.
which is for all intents and purposes.
struct Foo {
Bar b;
}
struct Bar {
void* ptr;
}
What? When is this invariant called? I've never heard of a hidden
invariant being added to structs, structs are supposed to be free of
such things.
I would call such a thing a bug.
It was added because someone VIP demanded it I guess.
Nope, it's really REALLY old (version 0.167):
https://github.com/dlang/dmd/commit/43a336d81c38817ae545becf02b7459836025c60
you can see the assert being added using -vcg-ast ;)
Hm... it doesn't look like an invariant, it just looks like an inserted
assert inside every function.
An incorrect assert, IMO:
struct Foo
{
int x;
void foo() {}
}
void main()
{
Foo *foo;
foo.foo(); // shouldn't assert, wouldn't crash anyway.
}
And since when did we care about null pointers causing segfaults?
Can anyone vouch for this feature?
-Steve