[Issue 10378] Local imports hide local symbols

via Digitalmars-d-bugs digitalmars-d-bugs at puremagic.com
Thu Aug 28 00:12:18 PDT 2014


https://issues.dlang.org/show_bug.cgi?id=10378

dbr <dbugreporter at gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |dbugreporter at gmail.com

--- Comment #3 from dbr <dbugreporter at gmail.com> ---
The fact that local imports hide things instead of properly detecting conflicts
is a dangerous bug. I actually almost trashed a bunch of files because of it
since I had something like this:

import std.stdio;
void main() {
    import std.file;    // just wanted to use dirEntries!
    auto files = dirEntries("importantfiles", "*.{png}", SpanMode.depth);
    foreach (f; files) {
        auto hdr = read_header(f.name);
        writeln(f.name, ":");
        writefln("%d x %d", hdr.width, hdr.height);
    }
}

Luckily, I had that read_header call *after* the first writeln, and it of
course threw and I only lost one file (and it wasn't actually important). I
know (now!) that the docs say this about local (or "scoped") imports: "Imported
symbols may hide symbols from outer scopes", but this is damn insane. It's
inconsistent and surprising.

--


More information about the Digitalmars-d-bugs mailing list