module hijacking

davidl davidl at nospam.org
Sun Nov 1 00:20:00 PDT 2009


在 Sun, 01 Nov 2009 13:28:56 +0800,Andrei Alexandrescu  
<SeeWebsiteForEmail at erdani.org> 写道:

> I ran the following experiment:
>
> mkdir deleteme
> cd deleteme
> mkdir std
> touch std/algorithm.d
> echo 'import std.algorithm; void main(){int a, b;swap(a,b);}' >main.d
> dmd main
>
> The attempt to compile main fails with "undefined identifier swap",  
> which means that the module I defined in the current directory  
> successfully hijacked the one in the standard library.
>
> The usual D spirit is that a symbol is searched exhaustively, and  
> attempts at hijacking are denounced. In the module cases, it turns out  
> that an entire module can successfully hijack another.
>
> Walter and I are ambivalent about this. There has been no bug report so

There must be some bug reports related to this issue, at least mine. But I  
report it in a way that I didn't aware the cause is this. After I realized  
the issue, and I was too lazy to change the bug reports.

> it seems like people didn't have a problem with things working as they  
> are. But maybe they never hijacked, or maybe some did hijack.
>
> Question: should we change this?
>
>
> Andrei

We definitely need to prevent the module level hijacking. But there isn't  
any effective way of correcting the current behavior. The hijacking can  
occur especially when you don't handle the build tool correctly, meaning  
the include path not set correspondingly, while you use both tango and  
phobos.


-- 
使用 Opera 革命性的电子邮件客户程序: http://www.opera.com/mail/



More information about the Digitalmars-d mailing list