On Fri, Nov 13, 2009 at 9:51 AM, Clay Smith <clay.smit...@gmail.com> wrote: > Leandro Lucarella wrote: >> >> I'm sorry to bring up another "How about Go's ..." topic, but I think this >> feature is very in sync with D and it should be really easy to implement. >> >> Go issues an error if you have an import that's never used, to avoid >> unnecessary dependencies. >> >> Do you see any reasons not to do that? I think it happens very often to >> stop using some import and never notice it. >> > > No, this is a job to be left to the IDE, not compiler.
Well, just a small argument for the contrary, but you may be importing some module precisely for the purpose of getting its module constructors to run. For instance the module constructor may have a call like RegisterComponent(thisModule) in it. Think of a set of image format loaders that register themselves with the main ImageLoader module. Then you call ImageLoader.load(filename). Nowhere in your code do you care if it is a PNG or not. You only need to use the ImageLoader's API. Also there's public imports. And all.d type modules with nothing but pubilic imports. There's no way an IDE can know about those intents. So that argues that there should be a way in the language to indicate "i know it doesn't look like I'm using this, but I am". And if that's in the language then the compiler might as well do the checking, too. Ok, not a super strong argument... unless D changed to compile things the way Go does, rolling in all deps. How about that one from Go? Including all deps in an obj. Could D use the same trick to speed up compilation further? --bb