dexonsmith added a comment.

Thanks for the quick and detailed response!

Your explanation of hybrid behaviour on Windows was especially helpful, as I 
didn't fully understand how that worked before.

One thing I see, but wasn't obvious from your description, is that the 
mixed/hybrid separator behaviour only happens for `defined(_WIN_32)`. E.g., 
from Path.cpp:

  bool is_separator(char value, Style style) {
    if (value == '/')
      return true;
    if (real_style(style) == Style::windows)
      return value == '\\';
    return false;
  }



In D70701#2514143 <https://reviews.llvm.org/D70701#2514143>, @amccarth wrote:

>> - The path style is detected when reading the YAML file (as now).
>
> Which path's style?  The virtual one that's going to be redirected or the
> actual one it's redirected at?

Both, but you've mostly convinced me not to go down this route.

> - Paths in the YAML file are canonicalized to native at parse time.
>
> If we canonicalize the virtual path, VFS would no longer be valuable for
> creating platform-agnostic tests.

This is a good point I hadn't considered.

> In LLDB, we have the additional wrinkle of remote debugging, where the
> debugger may be running on a Windows machine while the program being
> debugged is running on a Linux box.  You always have to know whether a path
> will be used on the debugger host or the debuggee host.  And there are
> similar concerns for post-mortem debugging from a crash collected on a
> different type of host.

Ah, interesting.

> Honestly, I'm not sure we have a good definition of what makeAbsolute
> should do.

Perhaps the name isn't ideal -- 
`prependRelativePathsWithCurrentWorkingDirectory()` would be more precise -- 
but otherwise I'm not sure I fully agree. Regardless, I acknowledge your point 
that the two worlds are awkwardly different.

I'm going to think about other options; thanks again for your feedback. I am 
still leaning toward `FileSystem::makeAbsolute()` not being virtual / 
overridden, but I have a better idea of how to approach that. One idea is for 
the `RedirectingFileSystem` to keep track of where different styles were used 
when parsing.... I'm not sure if that'll pan out though.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D70701/new/

https://reviews.llvm.org/D70701

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to