It's not just globals. It's hiding fields as well: class A { int x; this() { int x; // <- hides this.x } } I've had this happen during a cut/paste session, which happens when I'm refactoring my code.