We noticed that the dependency collectors of clang may report duplicate paths under Windows, when the differences are only in casing or separators (/ vs \)
This problem affects the correctness of the information output by clang-scan-deps, which in turn, affects our integration with the Fastbuild cache.
For separators, it can happen as clang internally computes the full path of a header from an #include directive using native separator.
Example with argument -I C:\includes:
#include <subdir/header.h> -> internally represented in the FileManager as C:\includes\subdir/header.h
#include "header.h" from another header in subdir folder -> C:\includes\subdir\header.h
The same applies with casing discrepancies that can be found sometimes in headers from external SDKs.
I feel like this should somehow be a property of the input virtual filesystem: we should be able to ask the VFS to do the path canonicalization for us, or ask if the FS is case insensitive and do the lower-casing if so.