Make imports private by default
clayasaurus
clayasaurus at gmail.com
Thu Apr 13 09:22:53 PDT 2006
Hasan Aljudy wrote:
> Don Clugston wrote:
>> Hasan Aljudy wrote:
>>
>>> Frank Benoit wrote:
>>>
>>>> There was a posting of Tyro
>>>> http://www.digitalmars.com/d/archives/digitalmars/D/11081.html
>>>>
>>>> Most ppl seconded that.
>>>>
>>>> The problem is, that D does not work if you use non-private imports all
>>>> the time. Suddenly there are conflicts.
>>>>
>>>> A public import make the imported module part of this modules
>>>> interface.
>>>> This can (and should) be made public explicitely.
>>>>
>>>
>>> I never understood why people use private imports .. just what the
>>> hell is the point?
>>> Please give real, concrete examples, not just theories/talk.
>>> "Clogging up the namespace" doesn't say anything meaningful to me.
>>
>>
>> If module foo publicly imports std.date, then any module which imports
>> foo cannot use std.string.format without colliding with std.date.format.
>> This has bitten me several times already.
>
> OK, this seems to be a valid problem, however, even if imports become
> private by default, there's nothing stopping foo from publicly importing
> std.date and std.string at the same time.
>
But at least the error is in the file the dmd compiler says it is, the
error for the above problem will be almost impossible for a maintainer
to find in a large project.
More information about the Digitalmars-d
mailing list