[libcxx-commits] [PATCH] D91178: [22/N] [libcxx] Implement append and operator/ properly for windows

Adrian McCarthy via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Fri Dec 11 11:41:58 PST 2020

amccarth requested changes to this revision.
amccarth added inline comments.
This revision now requires changes to proceed.

Comment at: libcxx/include/filesystem:1033
+    __pn_ += __p.__pn_.substr(__p_root_name_size);
+    return *this;
+  }
The above looks like a literal translation of the standard, so I'd expected it to be platform agnostic.  What makes it Windows-specific?

Comment at: libcxx/test/std/input.output/filesystems/class.path/path.member/path.append.pass.cpp:75
+      , {S("foo"),     S("C:/bar"),   S("C:/bar")}
+      , {S("foo"),     S("C:"),       S("C:")}
I expected 'C:foo`.  Using PathAppend, I get `C:\` (absolute, not relative).

It's interesting (to me) that the `<filesystem>` rules don't give either of those answers.

[This is just an observation.  Nothing to do here.]

Comment at: libcxx/test/std/input.output/filesystems/class.path/path.member/path.append.pass.cpp:97
+      , {S("//host/"), S("foo"),      S("//host/foo")}
+      , {S("//host"),  S(""),         S("//host/")}
The three UNC examples above exactly match those in the `#ifdef _WIN32` branch, so perhaps they should be hoisted above the ifdef.

  rG LLVM Github Monorepo



More information about the libcxx-commits mailing list