https://issues.dlang.org/show_bug.cgi?id=15966
--- Comment #11 from Mathias Lang <mathias.l...@sociomantic.com> --- (In reply to Walter Bright from comment #8) > (In reply to Mathias Lang from comment #6) > > A base class in another module can > > already override global imports by introducing new local symbols. > > The problem is if symbols are added to that import, then they have an > unintended side effect of overriding local symbols in the derived class code. > > Again, this is exactly the kind of problem this change was designed to stop. They will only override imported symbols from outer scopes, not local ones. So it would override module imports, but not module aliases, for example. The same problem exists for mixin template, and by extension any "non-final scope" have this "issue", but the recent change are much more sane and easy to work with. If you don't want this behavior, then `import` from base classes should not be visible at all (even within the same module), or we'll end up in a weird place with 2 or more different rules. There is a better description of how I thought it would / should work as part of: https://issues.dlang.org/show_bug.cgi?id=16004 --