[PATCH] D49518: [VFS] Emit an error when a file isn't located in any directory.

Volodymyr Sapsai via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Jul 24 18:02:48 PDT 2018


vsapsai added a comment.

In https://reviews.llvm.org/D49518#1168038, @bruno wrote:

> Hi Volodymyr, thanks for improving this.
>
> > Need to double check what tests we have when using relative path names at the root level.
>
> Another interesting place to look at is `unittests/Basic/VirtualFileSystemTest.cpp`


Thanks for the pointer. Probably I'll move the added test there as it doesn't need full file system interaction and doesn't need to execute entire clang_cc1.

>> I'd like to make the behavior consistent because a file name is a specific case of relative paths. So far there are no assertions and no errors but file lookup doesn't seem to be working.
> 
> Makes sense. My general impression is that relative paths don't make sense here either, but you can address that in a follow up patch (giving time for any potential counterexample on this).

Based on the code, relative paths won't work for file lookup. That is so because in `RedirectingFileSystem::lookupPath` we convert paths to absolute

  if (std::error_code EC = makeAbsolute(Path))
    return EC;
  // ...
  sys::path::const_iterator Start = sys::path::begin(Path);
  sys::path::const_iterator End = sys::path::end(Path);

and textually compare them with VFS entry name <https://github.com/llvm-mirror/clang/blob/f70ff96a80f2680e5aafa2becd194e2796cf2db9/lib/Basic/VirtualFileSystem.cpp#L1612-L1617>.

Having an error for relative paths makes the change cleaner, so I'll include it in this patch.


https://reviews.llvm.org/D49518





More information about the cfe-commits mailing list