[VFS] Implement getRealPath in InMemoryFileSystem.

Reviewers: bkramer

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D47262

llvm-svn: 333172
This commit is contained in:
Eric Liu
2018-05-24 11:17:00 +00:00
parent 34391f097d
commit 33dd619c80
3 changed files with 43 additions and 0 deletions

View File

@@ -788,6 +788,19 @@ std::error_code InMemoryFileSystem::setCurrentWorkingDirectory(const Twine &P) {
return {};
}
std::error_code
InMemoryFileSystem::getRealPath(const Twine &Path,
SmallVectorImpl<char> &Output) const {
auto CWD = getCurrentWorkingDirectory();
if (!CWD || CWD->empty())
return errc::operation_not_permitted;
Path.toVector(Output);
if (auto EC = makeAbsolute(Output))
return EC;
llvm::sys::path::remove_dots(Output, /*remove_dot_dot=*/true);
return {};
}
} // namespace vfs
} // namespace clang