Bug 5015 – Regression(1.061): Cyclic import breaks is() in a static if

Status
RESOLVED
Resolution
FIXED
Severity
regression
Priority
P2
Component
dmd
Product
D
Version
D1 (retired)
Platform
All
OS
Linux
Creation time
2010-10-07T17:15:00Z
Last change time
2011-01-13T22:36:37Z
Keywords
patch, rejects-valid
Assigned to
nobody
Creator
nyphbl8d

Attachments

IDFilenameSummaryContent-TypeSize
8535015.patchPatch for 5015text/plain646

Comments

Comment #0 by nyphbl8d — 2010-10-07T17:15:11Z
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.
Comment #1 by nyphbl8d — 2010-10-08T12:24:22Z
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).
Comment #2 by nyphbl8d — 2010-12-21T07:13:13Z
This is still broken in the latest 1.066 DMD. It also still compiles correctly in 2.051 DMD.
Comment #3 by ibuclaw — 2010-12-22T13:25:29Z
Created attachment 853 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
Comment #4 by ibuclaw — 2010-12-22T13:28:39Z
(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**
Comment #5 by bugzilla — 2011-01-13T22:36:37Z