diff options
author | Jan Svoboda <jan_svoboda@apple.com> | 2023-05-26 13:14:16 -0700 |
---|---|---|
committer | Jan Svoboda <jan_svoboda@apple.com> | 2023-05-26 15:30:28 -0700 |
commit | d6e617c8efab582121e0a0a9d539652bdfd544da (patch) | |
tree | 588ce41704d098199d0948236a411fabf70582e3 /clang/lib | |
parent | 89d71c1efa85656b54bcd79b4278bc67690480e1 (diff) | |
download | llvm-d6e617c8efab582121e0a0a9d539652bdfd544da.zip llvm-d6e617c8efab582121e0a0a9d539652bdfd544da.tar.gz llvm-d6e617c8efab582121e0a0a9d539652bdfd544da.tar.bz2 |
[clang][modules] NFCI: Use `DirectoryEntryRef` for umbrella directory
This removes some deprecated uses of `DirectoryEntry::getName()`.
Depends on D151581.
Differential Revision: https://reviews.llvm.org/D151584
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/Basic/Module.cpp | 8 | ||||
-rw-r--r-- | clang/lib/Lex/ModuleMap.cpp | 16 | ||||
-rw-r--r-- | clang/lib/Lex/PPLexerChange.cpp | 4 | ||||
-rw-r--r-- | clang/lib/Serialization/ASTReader.cpp | 3 |
4 files changed, 15 insertions, 16 deletions
diff --git a/clang/lib/Basic/Module.cpp b/clang/lib/Basic/Module.cpp index e0bce04..3df376a 100644 --- a/clang/lib/Basic/Module.cpp +++ b/clang/lib/Basic/Module.cpp @@ -263,12 +263,12 @@ bool Module::fullModuleNameIs(ArrayRef<StringRef> nameParts) const { return nameParts.empty(); } -const DirectoryEntry *Module::getEffectiveUmbrellaDir() const { +OptionalDirectoryEntryRef Module::getEffectiveUmbrellaDir() const { if (const auto *ME = Umbrella.dyn_cast<const FileEntryRef::MapEntry *>()) return FileEntryRef(*ME).getDir(); - if (const auto *ME = Umbrella.dyn_cast<const DirectoryEntry *>()) - return ME; - return nullptr; + if (const auto *ME = Umbrella.dyn_cast<const DirectoryEntryRef::MapEntry *>()) + return DirectoryEntryRef(*ME); + return std::nullopt; } void Module::addTopHeader(const FileEntry *File) { diff --git a/clang/lib/Lex/ModuleMap.cpp b/clang/lib/Lex/ModuleMap.cpp index 9bc1ccd..0db7ebf 100644 --- a/clang/lib/Lex/ModuleMap.cpp +++ b/clang/lib/Lex/ModuleMap.cpp @@ -1186,9 +1186,9 @@ void ModuleMap::setUmbrellaHeaderAsWritten( } void ModuleMap::setUmbrellaDirAsWritten( - Module *Mod, const DirectoryEntry *UmbrellaDir, const Twine &NameAsWritten, + Module *Mod, DirectoryEntryRef UmbrellaDir, const Twine &NameAsWritten, const Twine &PathRelativeToRootModuleDirectory) { - Mod->Umbrella = UmbrellaDir; + Mod->Umbrella = &UmbrellaDir.getMapEntry(); Mod->UmbrellaAsWritten = NameAsWritten.str(); Mod->UmbrellaRelativeToRootModuleDirectory = PathRelativeToRootModuleDirectory.str(); @@ -2515,16 +2515,14 @@ void ModuleMapParser::parseUmbrellaDirDecl(SourceLocation UmbrellaLoc) { } // Look for this file. - const DirectoryEntry *Dir = nullptr; + OptionalDirectoryEntryRef Dir; if (llvm::sys::path::is_absolute(DirName)) { - if (auto D = SourceMgr.getFileManager().getDirectory(DirName)) - Dir = *D; + Dir = SourceMgr.getFileManager().getOptionalDirectoryRef(DirName); } else { SmallString<128> PathName; PathName = Directory->getName(); llvm::sys::path::append(PathName, DirName); - if (auto D = SourceMgr.getFileManager().getDirectory(PathName)) - Dir = *D; + Dir = SourceMgr.getFileManager().getOptionalDirectoryRef(PathName); } if (!Dir) { @@ -2558,7 +2556,7 @@ void ModuleMapParser::parseUmbrellaDirDecl(SourceLocation UmbrellaLoc) { return; } - if (Module *OwningModule = Map.UmbrellaDirs[Dir]) { + if (Module *OwningModule = Map.UmbrellaDirs[*Dir]) { Diags.Report(UmbrellaLoc, diag::err_mmap_umbrella_clash) << OwningModule->getFullModuleName(); HadError = true; @@ -2566,7 +2564,7 @@ void ModuleMapParser::parseUmbrellaDirDecl(SourceLocation UmbrellaLoc) { } // Record this umbrella directory. - Map.setUmbrellaDirAsWritten(ActiveModule, Dir, DirNameAsWritten, DirName); + Map.setUmbrellaDirAsWritten(ActiveModule, *Dir, DirNameAsWritten, DirName); } /// Parse a module export declaration. diff --git a/clang/lib/Lex/PPLexerChange.cpp b/clang/lib/Lex/PPLexerChange.cpp index 3c4a138..4103cfe 100644 --- a/clang/lib/Lex/PPLexerChange.cpp +++ b/clang/lib/Lex/PPLexerChange.cpp @@ -298,7 +298,7 @@ void Preprocessor::diagnoseMissingHeaderInUmbrellaDir(const Module &Mod) { return; ModuleMap &ModMap = getHeaderSearchInfo().getModuleMap(); - const DirectoryEntry *Dir = Mod.getEffectiveUmbrellaDir(); + OptionalDirectoryEntryRef Dir = Mod.getEffectiveUmbrellaDir(); llvm::vfs::FileSystem &FS = FileMgr.getVirtualFileSystem(); std::error_code EC; for (llvm::vfs::recursive_directory_iterator Entry(FS, Dir->getName(), EC), @@ -318,7 +318,7 @@ void Preprocessor::diagnoseMissingHeaderInUmbrellaDir(const Module &Mod) { if (!ModMap.isHeaderInUnavailableModule(*Header)) { // Find the relative path that would access this header. SmallString<128> RelativePath; - computeRelativePath(FileMgr, Dir, *Header, RelativePath); + computeRelativePath(FileMgr, *Dir, *Header, RelativePath); Diag(ExpectedHeadersLoc, diag::warn_uncovered_module_header) << Mod.getFullModuleName() << RelativePath; } diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp index 5b53aa3..f6251fb 100644 --- a/clang/lib/Serialization/ASTReader.cpp +++ b/clang/lib/Serialization/ASTReader.cpp @@ -5750,7 +5750,8 @@ llvm::Error ASTReader::ReadSubmoduleBlock(ModuleFile &F, // See comments in SUBMODULE_UMBRELLA_HEADER std::string Dirname = std::string(Blob); ResolveImportedPath(F, Dirname); - if (auto Umbrella = PP.getFileManager().getDirectory(Dirname)) { + if (auto Umbrella = + PP.getFileManager().getOptionalDirectoryRef(Dirname)) { if (!CurrentModule->getUmbrellaDirAsWritten()) { // FIXME: NameAsWritten ModMap.setUmbrellaDirAsWritten(CurrentModule, *Umbrella, Blob, ""); |