On 6/10/2015 5:30 AM, Kenji Hara via Digitalmars-d wrote:
D has true forward reference resolution mechanism. In that case modules are cyclic imported, but the declared symbols don't have actual cyclic references. Therefore the snippet should work.
I agree the snippet should work. And I still maintain that cyclical imports are something worth significant effort to avoid.
But also, dmd doesn't quite have a proper mechanism for resolving forward references - it's a series of hacks, which is why it's been such a source of bugs.
The right way to do it is to go full lazy on running semantic() on imported symbols. I did this with enums a while back, and it's been working well.
https://github.com/D-Programming-Language/dmd/pull/4735
As always, thanks for the quick action!
And the regression was introduced by your unrelated change. While fixing the issue, I couldn't understand why it was necessary. https://github.com/D-Programming-Language/dmd/commit/a04cf864b932061ad7b72e7cad8b16fabc6a825a
Yeah, it was caused by a hack I put in as yet another hack to deal with forward references.