llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang Author: Zeyi Xu (zeyi2) <details> <summary>Changes</summary> On POSIX, backslashes are valid filename characters. Avoid converting them to slashes when computing absolute source paths in LibTooling, since doing so changes paths such as `a\b.cc` into `a/b.cc`. Closes #<!-- -->207396 --- Full diff: https://github.com/llvm/llvm-project/pull/207499.diff 2 Files Affected: - (modified) clang/lib/Tooling/Tooling.cpp (+1-1) - (modified) clang/unittests/Tooling/ToolingTest.cpp (+20) ``````````diff diff --git a/clang/lib/Tooling/Tooling.cpp b/clang/lib/Tooling/Tooling.cpp index 5da9c31ec47ec..71307d1fe7307 100644 --- a/clang/lib/Tooling/Tooling.cpp +++ b/clang/lib/Tooling/Tooling.cpp @@ -260,7 +260,7 @@ llvm::Expected<std::string> getAbsolutePath(llvm::vfs::FileSystem &FS, SmallString<1024> AbsolutePath = RelativePath; if (auto EC = FS.makeAbsolute(AbsolutePath)) return llvm::errorCodeToError(EC); - llvm::sys::path::native(AbsolutePath); + llvm::sys::path::make_preferred(AbsolutePath); return std::string(AbsolutePath); } diff --git a/clang/unittests/Tooling/ToolingTest.cpp b/clang/unittests/Tooling/ToolingTest.cpp index c3b8ffa00924e..aee46dc2e2c63 100644 --- a/clang/unittests/Tooling/ToolingTest.cpp +++ b/clang/unittests/Tooling/ToolingTest.cpp @@ -686,6 +686,26 @@ TEST(runToolOnCodeWithArgs, DiagnosticsColor) { {"-fcolor-diagnostics"})); } +#if !defined(_WIN32) +TEST(getAbsolutePath, PosixPreservesBackslashes) { + auto FS = llvm::vfs::getRealFileSystem(); + llvm::Expected<std::string> Path = getAbsolutePath(*FS, "a\\b.cc"); + if (!Path) + FAIL() << llvm::toString(Path.takeError()); + + llvm::ErrorOr<std::string> CWD = FS->getCurrentWorkingDirectory(); + ASSERT_TRUE(CWD) << CWD.getError().message(); + + SmallString<128> Expected(*CWD); + llvm::sys::path::append(Expected, "a\\b.cc"); + SmallString<128> WithSlash(*CWD); + llvm::sys::path::append(WithSlash, "a/b.cc"); + + EXPECT_EQ(std::string(Expected), *Path); + EXPECT_NE(std::string(WithSlash), *Path); +} +#endif + TEST(ClangToolTest, ArgumentAdjusters) { FixedCompilationDatabase Compilations("/", std::vector<std::string>()); `````````` </details> https://github.com/llvm/llvm-project/pull/207499 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
