How about Go's... error on unused imports?

Bill Baxter wbaxter at gmail.com
Fri Nov 13 10:07:16 PST 2009


On Fri, Nov 13, 2009 at 9:51 AM, Clay Smith <clay.smith.r at 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



More information about the Digitalmars-d mailing list