This code (reduced from a larger codebase) causes dmd to abort with "null this":
enum valueConvertible(T1, T2) = blah;
struct Checked(T, Hook)
{
bool opEquals(U)(Checked!(U, Hook) rhs)
{
alias R = typeof(payload + rhs.payload);
static if (valueConvertible!(T, R))
{
}
return false;
}
}
unittest
{
Checked!(Checked!(int, void), void) x1;
}
Comment #1 by ag0aep6g — 2016-07-03T22:32:22Z
Reduced a little bit more:
----
enum valueConvertible(T2) = blah;
struct Checked(T)
{
void opEquals(U)(Checked!U rhs)
{
alias R = typeof(payload);
enum e = valueConvertible!R;
}
}
alias C = Checked!int;
----
No ICE with 2.068. Segfaults with 2.069 which is probably just the -release variant of the "null this" AssertError.