QtD 0.1 is out!
Christopher Wright
dhasenan at gmail.com
Sat Feb 28 05:54:26 PST 2009
Lutger wrote:
> grauzone wrote:
>
>> Lars Ivar Igesund wrote:
>>> Eldar Insafutdinov wrote:
>>>
>>>> We faced a bug that module static constructors don't work with cyclic
>>>> imports. Currently it's fixed with a dirty hack which is not really
>>>> acceptable. Is there any chance for this to be fixed?
>>> IMO it is the cyclic import that is the bug ;)
>> Maybe all cyclic dependency bugs are on purpose, to teach people not to
>> use this evil D feature? Yeah, that must it be. I can't explain why else
>> these bugs/issues aren't fixed, and why people only reply with
>> incredibly useful statements like "but you shouldn't use this feature
>> anyway!".
>>
>> Broken features should be either fixed or removed. This half-assedness
>> about it isn't really going to help D.
>
> Well it's about cyclic dependency of initialization via module constructors
> only right? Cyclic imports in general aren't (supposed to be) broken, nor
> are module constructors.
>
And in point of fact, you can modify the runtime so it will not throw
exceptions on cyclic dependencies:
Index: genobj.d
===================================================================
--- genobj.d (revision 4339)
+++ genobj.d (working copy)
@@ -1098,11 +1098,7 @@
if (m.ctor || m.dtor)
{
if (m.flags & MIctorstart)
- { if (skip || m.flags & MIstandalone)
- continue;
- throw new Exception( "Cyclic dependency in module " ~
(from is null ? "*null*" : from.name) ~ " for import " ~ m.name);
- }
-
+ continue;
m.flags |= MIctorstart;
_moduleCtor2(m,m.importedModules, 0);
if (m.ctor)
This opens you up to certain bugs, but they should be relatively rare.
I've tried it, and it appears to work.
More information about the Digitalmars-d-announce
mailing list