import concerns (was Re: Historical language survey)

kris foo at bar.com
Fri Jul 7 22:37:02 PDT 2006


Walter Bright wrote:
> kris wrote:
> 
>> Walter Bright wrote:
>>
>>> What can be done is something like add a warning whenever a name is 
>>> found using the second-class import lookup, rather than using an 
>>> alias or a fully qualified lookup. Then, you'll be able to easily 
>>> purge your code of any such, and be confident that adding other 
>>> modules will not break your existing code.
>>
>>
>> I perhaps don't quite follow that completely. But it sounds like 
>> you're saying all names would have to be fully qualified at all times, 
>> unless they're declared within the enclosing module?
> 
> 
> Yes.
> 
>> ---
>> module a;
>>
>> int foo() {...}
>>
>> ---
>> module b;
>>
>> int foo() {...}
>>
>> ---
>> module main;
>>
>> import a;
>> import b as other;
>>
>> void main()
>> {
>>     foo();       // a.foo
>>     other.foo()  // b.foo;
>> }
>>
>> In this trivial example, you could do the same with an alias. However, 
>> an alias would /potentially/ be needed for every symbol within module 
>> b, whereas the "as" handles all of that cleanly. Consider the effort 
>> to manually alias each symbol from each imported modules that may 
>> potentially change over time? Import "as" does it cleanly instead.
> 
> 
> What I don't like about that proposal is the same reason you didn't like 
> the warning proposal above - you'd be forced to fully qualify all 
> references to names within b.
> 
>> However, I think this next option is preferable:
>>
>>
>>> What can also be done is extend the import declaration to allow the 
>>> .'s to continue so that specific symbols can be imported.
>>
>>
>> Now that would be great. I believe selective-importing (as an option) 
>> would be a boon in a number of ways ~ and would resolve this issue 
>> quite elegantly.
> 
> 
> I like this one better, too.


As FatFreddy would have noted, "Well, I'll be dipped in dogshit ..."



More information about the Digitalmars-d mailing list