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?