This issue is nearly identical to Issue 4692 with a minor amount of added depth. The test case below breaks 1.064 (but not 2.049): module breaker; import breaker; void main() {} static if (is(ElemType!(int))){} template ElemType(T) { alias _ElemType!(T).type ElemType; } template _ElemType(T) { alias r type; } As before, this was distilled from the same multi-module cyclic import. Also as before, commenting out the cyclic import causes the code to compile as expected. This code works properly in 1.060.
This regression is directly related to changeset 632 and 477 just as Issue 4302 was, but I'm not sure what conditions should be applied to ensure the code takes effect only in the correct circumstances (forcing the if expression to evaluate to false resovles the bug).
This is still broken in the latest 1.066 DMD. It also still compiles correctly in 2.051 DMD.
Created attachment 853 [details] Patch for 5015 Spotted the difference between D1 and D2 related to this bug report. This can be seen in changeset 447, and a quick comparison using Meld confirms this: Attaching patch (merged from D2) which fixes this issue. Regards
(In reply to comment #3) > Created an attachment (id=853) [details] > Patch for 5015 > > Spotted the difference between D1 and D2 related to this bug report. This can > be seen in changeset 447, and a quick comparison using Meld confirms this: Derp, I meant changeset **477**
http://www.dsource.org/projects/dmd/changeset/874
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル