Hey everyone,
I've already asked this on the PR that added __FILE_FULL_PATH__ (see https://github.com/dlang/dmd/pull/5959#issuecomment-2423255282) but there is no reply probably because that PR is long merged.
So, I'd like to repeat my question here: Is that intentional that the returned path is not normalized?
Our code base tends to use __FILE_FULL_PATH__ as a template argument, now I'm trying to split the compilation and let's say I compile lib/*.d separately and then compile bin/*.d passing -I../lib flag to find imports. The resulting object files can't be linked, because template arguments are project_dir/lib/module.d in one object file but project_dir/bin/../lib/module.d in another.
Of course, this could be solved by changing the build to never use .. (or .) in the paths passed to the compiler (or use them consistently everywhere)... Or by replacing __FILE_FULL_PATH__ with __FILE_FULL_PATH__.buildNormalizedPath everywhere (well, doesn't even have to be everywhere, just everything that might end up in templates' arguments).
But I wonder, shouldn't __FILE_FULL_PATH__ be normalized in the first place?
Permalink
Reply