https://issues.dlang.org/show_bug.cgi?id=17625
Issue ID: 17625 Summary: Confusing error message for private functions in different modules Product: D Version: D2 Hardware: All OS: All Status: NEW Severity: trivial Priority: P1 Component: dmd Assignee: nob...@puremagic.com Reporter: ket...@ketmar.no-ip.org i don't know how to make a clear summary for this, sorry. anyway, here is the code. let's create three modules: === z00.d === module z00; private int boo () { return 42; } === z01.d === module z01; private int boo () { return 69; } === zmain.d === module zmain; import z00, z01; void main () { boo(); } now, do: dmd -c -o- zmain.d z00.d z01.d and you'll get: zmain.d(3): Error: z01.boo at z01.d(2) conflicts with z00.boo at z00.d(2) zmain.d(3): Error: function z01.boo is not accessible from module zmain while the second error message gives at least *some* information, the first one is not only completely useless, but is misleading too: user may think that he has to rename one of the private functions to get rid of it. i think that compiler should just say "undefined identifier `boo`", 'cause visibility rules mandates that private functions are not visible at that point, and there is no sense in trying to resolve anything there. --