module hijacking

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Sat Oct 31 22:28:56 PDT 2009


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 
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



More information about the Digitalmars-d mailing list