https://issues.dlang.org/show_bug.cgi?id=15071
Issue ID: 15071 Summary: filenames and module names with case-insensitive HFS+ Product: D Version: D2 Hardware: All OS: Mac OS X Status: NEW Severity: major Priority: P1 Component: dmd Assignee: nob...@puremagic.com Reporter: john.loughran.col...@gmail.com by default, OS X uses case-insensitive-but-case-preserving HFS+ and this is what almost all OS X users will have. consider the following (incorrect) code: % cat chirplet.d import mathutil; auto chirplet() { exp(0); } % cat mathUtil.d auto expi(double ) { } auto exp(T)(T c) { expi(c); } % dmd chirplet.d mathUtil.d -main Undefined symbols for architecture x86_64: "_D8mathutil4expiFNaNbNiNfdZv", referenced from: _D8mathutil10__T3expTiZ3expFNaNbNiNfiZv in chirplet.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) --- errorlevel 1 What I think is happening: While compiling chirplet.d, dmd sees `import mathutil;` and asks the filesystem for a file called `mathutil.d` in the current directory. HFS+ provides `mathUtil.d` because it doesn't know any better. dmd continues compiling and emits references to `mathutil` symbols. dmd compiles `mathUtil.d` and emits `mathUtil` symbols. Linker sees the case mismatch and fails. --