mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-23 11:04:49 +00:00
Move twice-repeated clang path operation into a new function.
And make it more robust in the edge case of exactly "./" as input. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246711 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
2ab58354ab
commit
3d7575d7e2
@ -401,6 +401,12 @@ bool is_absolute(const Twine &path);
|
||||
/// @result True if the path is relative, false if it is not.
|
||||
bool is_relative(const Twine &path);
|
||||
|
||||
/// @brief Remove redundant leading "./" pieces and consecutive separators.
|
||||
///
|
||||
/// @param path Input path.
|
||||
/// @result The cleaned-up \a path.
|
||||
StringRef remove_leading_dotslash(StringRef path);
|
||||
|
||||
} // end namespace path
|
||||
} // end namespace sys
|
||||
} // end namespace llvm
|
||||
|
@ -661,8 +661,16 @@ bool is_absolute(const Twine &path) {
|
||||
return rootDir && rootName;
|
||||
}
|
||||
|
||||
bool is_relative(const Twine &path) {
|
||||
return !is_absolute(path);
|
||||
bool is_relative(const Twine &path) { return !is_absolute(path); }
|
||||
|
||||
StringRef remove_leading_dotslash(StringRef Path) {
|
||||
// Remove leading "./" (or ".//" or "././" etc.)
|
||||
while (Path.size() > 2 && Path[0] == '.' && is_separator(Path[1])) {
|
||||
Path = Path.substr(2);
|
||||
while (Path.size() > 0 && is_separator(Path[0]))
|
||||
Path = Path.substr(1);
|
||||
}
|
||||
return Path;
|
||||
}
|
||||
|
||||
} // end namespace path
|
||||
|
@ -789,4 +789,14 @@ TEST(Support, NormalizePath) {
|
||||
|
||||
#undef EXPECT_PATH_IS
|
||||
}
|
||||
|
||||
TEST(Support, RemoveLeadingDotSlash) {
|
||||
StringRef Path1("././/foolz/wat");
|
||||
StringRef Path2("./////");
|
||||
|
||||
Path1 = path::remove_leading_dotslash(Path1);
|
||||
EXPECT_EQ(Path1, "foolz/wat");
|
||||
Path2 = path::remove_leading_dotslash(Path2);
|
||||
EXPECT_EQ(Path2, "");
|
||||
}
|
||||
} // anonymous namespace
|
||||
|
Loading…
x
Reference in New Issue
Block a user