Effective D book?

Jonathan M Davis jmdavisProg at gmx.com
Sun Jun 16 02:15:42 PDT 2013


On Sunday, June 16, 2013 11:06:18 Peter Alexander wrote:
> On Saturday, 15 June 2013 at 23:36:35 UTC, Walter Bright wrote:
> > On 6/15/2013 2:34 PM, Timon Gehr wrote:
> >> It sure is, the module system is supposed to provide hijacking
> >> protection.
> > 
> > Inner scopes override outer scopes. That isn't what hijacking
> > is.
> 
> I think this is an issue Walter, consider:
> 
> void main()
> {
>      import std.stdio;
>      string message = "Hello, world!";
>      writeln(message);
> }
> 
> It std.stdio contains a symbol called "message" then this will
> not print "Hello, world". Updates to libraries that introduce
> symbols could subtly break working code.
> 
> Whether or not this is what hijacking is, I think this is a
> problem.

I concur. It may be that it's reasonable for local imports to shadow 
declarations from outside the function rather than creating conflicts, but they 
definitely shouldn't shadow symbols inside the function - _especially_ when the 
local symbol is declared after the local import. The current behavior is just 
going to create bugs.

- Jonathan M Davis


More information about the Digitalmars-d mailing list