2.068.0 regression?

Andrei Alexandrescu via Digitalmars-d digitalmars-d at puremagic.com
Wed Aug 19 20:55:39 PDT 2015


On 8/19/15 7:29 PM, Timon Gehr wrote:
> On 08/20/2015 01:20 AM, deadalnix wrote:
>> On Wednesday, 19 August 2015 at 23:18:04 UTC, Timon Gehr wrote:
>>> On 08/20/2015 01:06 AM, Dicebot wrote:
>>>> On Wednesday, 19 August 2015 at 22:33:23 UTC, Timon Gehr wrote:
>>>>> It's a bug in local imports. This is the ticket:
>>>>> https://issues.dlang.org/show_bug.cgi?id=10378
>>>>
>>>> Seems to fit into existing shadowing semantics.
>>>
>>> There's no precedent for symbols shadowed by imports.
>>>
>>>> If this is a bug we may need a new spec.
>>>
>>> I believe local imports were first implemented without paying any
>>> attention to shadowing. I think the broken semantics implemented in
>>> DMD without a sufficient up-front design were then back-ported into
>>> the documentation at some point. This still happens too often. This is
>>> the JavaScript style of language design.
>>
>> import should NEVER shadow local symbols.
>
> And yet for some reason this obviously broken behaviour is now
> documented as intended in the official language documentation.
>
> http://dlang.org/module.html, look for "Scoped Imports".
>
> "The imports are looked up to satisfy any unresolved symbols at that
> scope. Imported symbols may hide symbols from outer scopes."
>
>
> On that same page:
>
> "Modules offer several guarantees:
>      [...]
>      ● If a module C imports modules A and B, any modifications to B
> will not silently change code in C that is dependent on A."

We need to fix the implementation. We can't promote imports that hide 
local symbols. -- Andrei



More information about the Digitalmars-d mailing list