D - BUG?: Private imports -> Forward references
- Lars Ivar Igesund (46/46) Sep 30 2003 Hi!
- Lars Ivar Igesund (11/57) Nov 13 2003 It would be really nice if this bug could be either verified or
- Walter (4/12) Jan 05 2004 I agree it's a problem. I'm not sure what to do about it, but I'll keep ...
- Russ Lewis (8/25) Feb 27 2004 I am also starting to see this problem in my code. IMHO, one of the
Hi! I have mentioned this problem before, and after some looking and the creation of a minimal example, I feel that I have created a good case. Doing dmd -c bar.d produce foo2.d: class foo2 forward reference of base class bar Doing dmd -c bar.d foo1.d foo2.d yields the same Doing dmd -c foo1.d foo2.d bar.d works without a hitch. According to the D lang spec quote: " If the import is private, such as: module abc; private import def; then def is not searched when another module imports abc. " In my example, foo2 is clearly searched, even though it's a private import in the imported module. If such circular forward references really is a problem, then private imports must be the way to fix them. Personally, I believe that this is a bug since it only pops up when foo2 (as a subclass) is imported (indirectly and wrongly in this case) into the module where the base class is defined. -------------- module bar; private import foo1; class bar { } -------------- module foo1; private import foo2; class foo1 { } --------------- module foo2; private import bar; class foo2 : bar { } --------------- Lars Ivar Igesund
Sep 30 2003
It would be really nice if this bug could be either verified or falsified. Such forward reference messages are real pain in the a** as it means that the project must be compiled all at once (not one and one file using -c). And when all files are used as input at once, the error messages are way too unclear because they assumes that you use only one input file and thus the offending file name isn't printed (which is no good when there are 20+ source files.). Lars Ivar Igesund "Lars Ivar Igesund" <larsivi stud.ntnu.no> wrote in message news:blbji1$2un5$1 digitaldaemon.com...Hi! I have mentioned this problem before, and after some looking and the creation of a minimal example, I feel that I have created a good case. Doing dmd -c bar.d produce foo2.d: class foo2 forward reference of base class bar Doing dmd -c bar.d foo1.d foo2.d yields the same Doing dmd -c foo1.d foo2.d bar.d works without a hitch. According to the D lang spec quote: " If the import is private, such as: module abc; private import def; then def is not searched when another module imports abc. " In my example, foo2 is clearly searched, even though it's a private import in the imported module. If such circular forward references really is a problem, then private imports must be the way to fix them. Personally, I believe that this is a bug since it only pops up when foo2 (as a subclass) is imported (indirectly and wrongly in this case) into the module where the base class is defined. -------------- module bar; private import foo1; class bar { } -------------- module foo1; private import foo2; class foo1 { } --------------- module foo2; private import bar; class foo2 : bar { } --------------- Lars Ivar Igesund
Nov 13 2003
"Lars Ivar Igesund" <larsivi stud.ntnu.no> wrote in message news:bovno1$316c$1 digitaldaemon.com...It would be really nice if this bug could be either verified or falsified. Such forward reference messages are real pain in the a** as it means that the project must be compiled all at once (not one and one file using -c). And when all files are used as input at once, the error messages are way too unclear because they assumes that you use only one input file and thus the offending file name isn't printed (which is no good when there are 20+ source files.).I agree it's a problem. I'm not sure what to do about it, but I'll keep it in the bug list until it is properly resolved.
Jan 05 2004
I am also starting to see this problem in my code. IMHO, one of the great selling points of D is that you can import other modules whilly-nilly without having to worry about forward references and other C header nightmares. This bug undercuts that feature. Walter, I know you know about this bug. I'm just hoping I can push this to the top of the heap :) Russ Walter wrote:"Lars Ivar Igesund" <larsivi stud.ntnu.no> wrote in message news:bovno1$316c$1 digitaldaemon.com...It would be really nice if this bug could be either verified or falsified. Such forward reference messages are real pain in the a** as it means that the project must be compiled all at once (not one and one file using -c). And when all files are used as input at once, the error messages are way too unclear because they assumes that you use only one input file and thus the offending file name isn't printed (which is no good when there are 20+ source files.).I agree it's a problem. I'm not sure what to do about it, but I'll keep it in the bug list until it is properly resolved.
Feb 27 2004