D_Parser
D_Parser copied to clipboard
Stack overflow with `static foreach`
This code (reduced from std.math) causes a stack overflow when trying to get a tooltip for Num.alignof:
import std.meta : AliasSeq;
deprecated("Please use std.complex")
static foreach (Num; AliasSeq!(cfloat, cdouble, creal, ifloat, idouble, ireal))
{
auto abs(Num z) @safe pure nothrow @nogc
{
enum m = Num.alignof;
return m;
}
}
Kann es sein, dass beim Auswerten des Tooltips eval=true ist, und dann der Wert evaluiert werden soll? Das ist noch nicht implementiert - abgesehen davon, dass ich nicht weiß, ob AliasSeq richtig ausgewertet wird^^
Natürlich ist ein SO an der Stelle so oder so falsch.
Passiert bereits beim ResolveTypeLoosely, auch mit meiner Ergänzung im TypeReferenceFinder.
Hier ist noch en crash in dem Zusammenhang:
alias PageBits = size_t[4];
void sweep()
{
Pool* pool = null;
static foreach (w; 0 .. PageBits.length)
{}
if (pool.data)
{
}
}