This is a recursive definition, I guess this should be expected. Lowering to minor issue.
Comment #2 by dmitry.olsh — 2012-04-20T11:51:17Z
Compier stackoverflows and segfaults are NOT minor issue.
Comment #3 by k.hara.pg — 2012-05-30T20:42:22Z
Changed importance to 'major'.
Comment #4 by k.hara.pg — 2012-06-01T05:21:44Z
More simple case:
struct Foo { int dg = &Foo.init; }
In AddrExp, compiler will try to convert Foo.init to lvalue with Expression::toLvalue, but it is not possible, then try to output an error message like "Foo(...) is not an lvalue".
But, the initializer of the field dg contains Foo.init itself. So it will occurs *recursive printing*.
Foo(Foo.init) -> Foo(Foo(Foo.init)) -> Foo(Foo(Foo(Foo.init))) ...