On Wed, Jul 25, 2018 at 1:40 AM Eric Liu <ioe...@google.com> wrote: > Please also include a link to the test failure in the commit message or > this email thread. > Sorry, I left the failure on the review thread ( https://reviews.llvm.org/D49724) but forgot to include it in the commit message. I'll make sure to do that next time!
Build bot logs: http://lab.llvm.org:8011/builders/clang-cmake-aarch64-quick/builds/14441/steps/ninja%20check%201 Sample snippet: [ RUN ] GoToInclude.All /home/buildslave/buildslave/clang-cmake-aarch64-quick/llvm/tools/clang/tools/extra/unittests/clangd/XRefsTests.cpp:953: Failure Value of: *Locations Expected: has 1 element that is equal to 0:0-0:0@file:///clangd-test/foo.h Actual: {} > > On Tue, Jul 24, 2018 at 10:28 PM Jordan Rupprecht via cfe-commits < > cfe-commits@lists.llvm.org> wrote: > >> Author: rupprecht >> Date: Tue Jul 24 13:28:07 2018 >> New Revision: 337850 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=337850&view=rev >> Log: >> Revert "[VFS] Cleanups to VFS interfaces." >> >> This reverts commit r337834 due to test failures. >> >> Modified: >> cfe/trunk/include/clang/Basic/VirtualFileSystem.h >> cfe/trunk/lib/Basic/FileManager.cpp >> cfe/trunk/lib/Basic/VirtualFileSystem.cpp >> >> Modified: cfe/trunk/include/clang/Basic/VirtualFileSystem.h >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/VirtualFileSystem.h?rev=337850&r1=337849&r2=337850&view=diff >> >> ============================================================================== >> --- cfe/trunk/include/clang/Basic/VirtualFileSystem.h (original) >> +++ cfe/trunk/include/clang/Basic/VirtualFileSystem.h Tue Jul 24 13:28:07 >> 2018 >> @@ -45,8 +45,7 @@ class MemoryBuffer; >> namespace clang { >> namespace vfs { >> >> -/// File information from a \p File::status() operation. >> -/// This is roughly equivalent to a `struct stat` plus a file path. >> +/// The result of a \p status operation. >> class Status { >> std::string Name; >> llvm::sys::fs::UniqueID UID; >> @@ -67,14 +66,13 @@ public: >> llvm::sys::TimePoint<> MTime, uint32_t User, uint32_t Group, >> uint64_t Size, llvm::sys::fs::file_type Type, >> llvm::sys::fs::perms Perms); >> - Status(const llvm::sys::fs::file_status &FSStatus, StringRef Name); >> >> - /// Get a copy of a this Status with a different name. >> - Status copyWithNewName(StringRef NewName); >> + /// Get a copy of a Status with a different name. >> + static Status copyWithNewName(const Status &In, StringRef NewName); >> + static Status copyWithNewName(const llvm::sys::fs::file_status &In, >> + StringRef NewName); >> >> /// Returns the name that should be used for this file or directory. >> - /// This is usually the path that the file was opened as, without >> resolving >> - /// relative paths or symlinks. >> StringRef getName() const { return Name; } >> >> /// @name Status interface from llvm::sys::fs >> @@ -109,16 +107,15 @@ public: >> virtual ~File(); >> >> /// Get the status of the file. >> - /// This may access the filesystem (e.g. `stat()`), or return a cached >> value. >> virtual llvm::ErrorOr<Status> status() = 0; >> >> - /// Get the "real name" of the file, if available. >> - /// This should be absolute, and typically has symlinks resolved. >> - /// >> - /// Only some VFS implementations provide this, and only sometimes. >> - /// FIXME: these maybe-available semantics are not very useful. It >> would be >> - /// nice if this was more consistent with FileSystem::getRealPath(). >> - virtual llvm::Optional<std::string> getRealPath() { return llvm::None; >> } >> + /// Get the name of the file >> + virtual llvm::ErrorOr<std::string> getName() { >> + if (auto Status = status()) >> + return Status->getName().str(); >> + else >> + return Status.getError(); >> + } >> >> /// Get the contents of the file as a \p MemoryBuffer. >> virtual llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> >> >> Modified: cfe/trunk/lib/Basic/FileManager.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/FileManager.cpp?rev=337850&r1=337849&r2=337850&view=diff >> >> ============================================================================== >> --- cfe/trunk/lib/Basic/FileManager.cpp (original) >> +++ cfe/trunk/lib/Basic/FileManager.cpp Tue Jul 24 13:28:07 2018 >> @@ -316,7 +316,7 @@ const FileEntry *FileManager::getFile(St >> UFE.File = std::move(F); >> UFE.IsValid = true; >> if (UFE.File) >> - if (auto RealPathName = UFE.File->getRealPath()) >> + if (auto RealPathName = UFE.File->getName()) >> UFE.RealPathName = *RealPathName; >> return &UFE; >> } >> >> Modified: cfe/trunk/lib/Basic/VirtualFileSystem.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/VirtualFileSystem.cpp?rev=337850&r1=337849&r2=337850&view=diff >> >> ============================================================================== >> --- cfe/trunk/lib/Basic/VirtualFileSystem.cpp (original) >> +++ cfe/trunk/lib/Basic/VirtualFileSystem.cpp Tue Jul 24 13:28:07 2018 >> @@ -73,14 +73,16 @@ Status::Status(StringRef Name, UniqueID >> : Name(Name), UID(UID), MTime(MTime), User(User), Group(Group), >> Size(Size), >> Type(Type), Perms(Perms) {} >> >> -Status::Status(const file_status &In, StringRef NewName) >> - : Status(NewName, In.getUniqueID(), In.getLastModificationTime(), >> - In.getUser(), In.getGroup(), In.getSize(), In.type(), >> - In.permissions()) {} >> - >> -Status Status::copyWithNewName(StringRef NewName) { >> - return Status(NewName, getUniqueID(), getLastModificationTime(), >> getUser(), >> - getGroup(), getSize(), getType(), getPermissions()); >> +Status Status::copyWithNewName(const Status &In, StringRef NewName) { >> + return Status(NewName, In.getUniqueID(), In.getLastModificationTime(), >> + In.getUser(), In.getGroup(), In.getSize(), In.getType(), >> + In.getPermissions()); >> +} >> + >> +Status Status::copyWithNewName(const file_status &In, StringRef NewName) >> { >> + return Status(NewName, In.getUniqueID(), In.getLastModificationTime(), >> + In.getUser(), In.getGroup(), In.getSize(), In.type(), >> + In.permissions()); >> } >> >> bool Status::equivalent(const Status &Other) const { >> @@ -176,7 +178,6 @@ class RealFile : public File { >> Status S; >> std::string RealName; >> >> - // NewRealPathName is used only if non-empty. >> RealFile(int FD, StringRef NewName, StringRef NewRealPathName) >> : FD(FD), S(NewName, {}, {}, {}, {}, {}, >> llvm::sys::fs::file_type::status_error, {}), >> @@ -188,7 +189,7 @@ public: >> ~RealFile() override; >> >> ErrorOr<Status> status() override; >> - Optional<std::string> getRealPath() override; >> + ErrorOr<std::string> getName() override; >> ErrorOr<std::unique_ptr<MemoryBuffer>> getBuffer(const Twine &Name, >> int64_t FileSize, >> bool >> RequiresNullTerminator, >> @@ -206,15 +207,13 @@ ErrorOr<Status> RealFile::status() { >> file_status RealStatus; >> if (std::error_code EC = sys::fs::status(FD, RealStatus)) >> return EC; >> - S = Status(RealStatus, S.getName()); >> + S = Status::copyWithNewName(RealStatus, S.getName()); >> } >> return S; >> } >> >> -Optional<std::string> RealFile::getRealPath() { >> - if (RealName.empty()) >> - return llvm::None; >> - return RealName; >> +ErrorOr<std::string> RealFile::getName() { >> + return RealName.empty() ? S.getName().str() : RealName; >> } >> >> ErrorOr<std::unique_ptr<MemoryBuffer>> >> @@ -252,7 +251,7 @@ ErrorOr<Status> RealFileSystem::status(c >> sys::fs::file_status RealStatus; >> if (std::error_code EC = sys::fs::status(Path, RealStatus)) >> return EC; >> - return Status(RealStatus, Path.str()); >> + return Status::copyWithNewName(RealStatus, Path.str()); >> } >> >> ErrorOr<std::unique_ptr<File>> >> @@ -304,7 +303,7 @@ public: >> if (Iter != llvm::sys::fs::directory_iterator()) { >> llvm::sys::fs::file_status S; >> std::error_code ErrorCode = llvm::sys::fs::status(Iter->path(), S, >> true); >> - CurrentEntry = Status(S, Iter->path()); >> + CurrentEntry = Status::copyWithNewName(S, Iter->path()); >> if (!EC) >> EC = ErrorCode; >> } >> @@ -318,7 +317,7 @@ public: >> } else { >> llvm::sys::fs::file_status S; >> std::error_code ErrorCode = llvm::sys::fs::status(Iter->path(), S, >> true); >> - CurrentEntry = Status(S, Iter->path()); >> + CurrentEntry = Status::copyWithNewName(S, Iter->path()); >> if (!EC) >> EC = ErrorCode; >> } >> @@ -1642,7 +1641,7 @@ static Status getRedirectedFileStatus(co >> Status ExternalStatus) { >> Status S = ExternalStatus; >> if (!UseExternalNames) >> - S = S.copyWithNewName(Path.str()); >> + S = Status::copyWithNewName(S, Path.str()); >> S.IsVFSMapped = true; >> return S; >> } >> @@ -1658,7 +1657,7 @@ ErrorOr<Status> RedirectingFileSystem::s >> return S; >> } else { // directory >> auto *DE = cast<RedirectingDirectoryEntry>(E); >> - return DE->getStatus().copyWithNewName(Path.str()); >> + return Status::copyWithNewName(DE->getStatus(), Path.str()); >> } >> } >> >> >> >> _______________________________________________ >> cfe-commits mailing list >> cfe-commits@lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >> >
smime.p7s
Description: S/MIME Cryptographic Signature
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits