// https://bugzilla.gdcproject.org/show_bug.cgi?id=286 | |
// { dg-do run } | |
// { dg-skip-if "needs gcc/config.d" { ! d_runtime } } | |
void main() | |
{ | |
struct K286 | |
{ | |
int count; | |
this(this) | |
{ | |
count++; | |
} | |
} | |
struct S286 | |
{ | |
int data; | |
this(K286 key) | |
{ | |
data = key.count; | |
} | |
} | |
S286 getData(K286 key) | |
{ | |
static S286[K286] getCache; | |
auto p = key in getCache; | |
if (p) | |
return *p; | |
return (getCache[key] = S286(key)); | |
} | |
auto s = getData(K286()); | |
if (s.data == 0) | |
assert(0); | |
} |