[Issue 15071] New: filenames and module names with case-insensitive HFS+
via Digitalmars-d-bugs
digitalmars-d-bugs at puremagic.com
Wed Sep 16 02:51:26 PDT 2015
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: nobody at puremagic.com
Reporter: john.loughran.colvin at 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.
--
More information about the Digitalmars-d-bugs
mailing list