[clang] [clang-tools-extra] [clang] Make deprecations of some `FileManager` APIs formal (PR #110014)
via cfe-commits
cfe-commits at lists.llvm.org
Wed Sep 25 09:48:46 PDT 2024
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang-tools-extra
Author: Jan Svoboda (jansvoboda11)
<details>
<summary>Changes</summary>
Some `FileManager` APIs still return `{File,Directory}Entry` instead of the preferred `{File,Directory}EntryRef`. These are documented to be deprecated, but don't have the attribute that warns on their usage. This PR marks them as such with `LLVM_DEPRECATED()` and replaces their usage with the recommended counterparts. NFCI.
---
Patch is 39.57 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/110014.diff
28 Files Affected:
- (modified) clang-tools-extra/clang-move/tool/ClangMove.cpp (+1-1)
- (modified) clang-tools-extra/clangd/SourceCode.cpp (+2-2)
- (modified) clang-tools-extra/clangd/unittests/ParsedASTTests.cpp (+2-2)
- (modified) clang-tools-extra/include-cleaner/unittests/FindHeadersTest.cpp (+1-1)
- (modified) clang-tools-extra/include-cleaner/unittests/RecordTest.cpp (+42-42)
- (modified) clang-tools-extra/unittests/include/common/VirtualFileHelper.h (+1-1)
- (modified) clang/include/clang/Basic/DiagnosticFrontendKinds.td (-2)
- (modified) clang/include/clang/Basic/FileManager.h (+7-1)
- (modified) clang/lib/AST/ASTImporter.cpp (+2-2)
- (modified) clang/lib/CodeGen/CodeGenAction.cpp (+2-2)
- (modified) clang/lib/ExtractAPI/ExtractAPIConsumer.cpp (+2-2)
- (modified) clang/lib/Frontend/ASTUnit.cpp (+1-1)
- (modified) clang/lib/Frontend/CompilerInstance.cpp (+4-8)
- (modified) clang/lib/Frontend/Rewrite/FrontendActions.cpp (+1-1)
- (modified) clang/lib/InstallAPI/Frontend.cpp (+1-1)
- (modified) clang/lib/Lex/HeaderSearch.cpp (+4-4)
- (modified) clang/lib/Lex/ModuleMap.cpp (+2-1)
- (modified) clang/lib/Lex/PPLexerChange.cpp (+1-1)
- (modified) clang/lib/Serialization/ASTReader.cpp (+3-3)
- (modified) clang/lib/Serialization/ModuleManager.cpp (+6-6)
- (modified) clang/lib/Tooling/Core/Replacement.cpp (+1-1)
- (modified) clang/lib/Tooling/DependencyScanning/ModuleDepCollector.cpp (+5-3)
- (modified) clang/tools/clang-installapi/Options.cpp (+1-1)
- (modified) clang/tools/clang-refactor/ClangRefactor.cpp (+1-1)
- (modified) clang/tools/clang-refactor/TestSupport.cpp (+1-1)
- (modified) clang/unittests/Basic/FileManagerTest.cpp (+40-37)
- (modified) clang/unittests/Basic/SourceManagerTest.cpp (+1-1)
- (modified) clang/unittests/Frontend/CompilerInstanceTest.cpp (+1-1)
``````````diff
diff --git a/clang-tools-extra/clang-move/tool/ClangMove.cpp b/clang-tools-extra/clang-move/tool/ClangMove.cpp
index 1560dcaad67793..655ea81ee37d4f 100644
--- a/clang-tools-extra/clang-move/tool/ClangMove.cpp
+++ b/clang-tools-extra/clang-move/tool/ClangMove.cpp
@@ -199,7 +199,7 @@ int main(int argc, const char **argv) {
for (auto I = Files.begin(), E = Files.end(); I != E; ++I) {
OS << " {\n";
OS << " \"FilePath\": \"" << *I << "\",\n";
- const auto Entry = FileMgr.getFile(*I);
+ const auto Entry = FileMgr.getOptionalFileRef(*I);
auto ID = SM.translateFile(*Entry);
std::string Content;
llvm::raw_string_ostream ContentStream(Content);
diff --git a/clang-tools-extra/clangd/SourceCode.cpp b/clang-tools-extra/clangd/SourceCode.cpp
index 3af99b9db056da..780aaa471dc8b6 100644
--- a/clang-tools-extra/clangd/SourceCode.cpp
+++ b/clang-tools-extra/clangd/SourceCode.cpp
@@ -814,8 +814,8 @@ llvm::SmallVector<llvm::StringRef> ancestorNamespaces(llvm::StringRef NS) {
// Checks whether \p FileName is a valid spelling of main file.
bool isMainFile(llvm::StringRef FileName, const SourceManager &SM) {
- auto FE = SM.getFileManager().getFile(FileName);
- return FE && *FE == SM.getFileEntryForID(SM.getMainFileID());
+ auto FE = SM.getFileManager().getOptionalFileRef(FileName);
+ return FE && FE == SM.getFileEntryRefForID(SM.getMainFileID());
}
} // namespace
diff --git a/clang-tools-extra/clangd/unittests/ParsedASTTests.cpp b/clang-tools-extra/clangd/unittests/ParsedASTTests.cpp
index 4bb76cd6ab8304..6ee641caeefe3d 100644
--- a/clang-tools-extra/clangd/unittests/ParsedASTTests.cpp
+++ b/clang-tools-extra/clangd/unittests/ParsedASTTests.cpp
@@ -397,10 +397,10 @@ TEST(ParsedASTTest, PatchesAdditionalIncludes) {
auto &FM = SM.getFileManager();
// Copy so that we can use operator[] to get the children.
IncludeStructure Includes = PatchedAST->getIncludeStructure();
- auto MainFE = FM.getFile(testPath("foo.cpp"));
+ auto MainFE = FM.getOptionalFileRef(testPath("foo.cpp"));
ASSERT_TRUE(MainFE);
auto MainID = Includes.getID(*MainFE);
- auto AuxFE = FM.getFile(testPath("sub/aux.h"));
+ auto AuxFE = FM.getOptionalFileRef(testPath("sub/aux.h"));
ASSERT_TRUE(AuxFE);
auto AuxID = Includes.getID(*AuxFE);
EXPECT_THAT(Includes.IncludeChildren[*MainID], Contains(*AuxID));
diff --git a/clang-tools-extra/include-cleaner/unittests/FindHeadersTest.cpp b/clang-tools-extra/include-cleaner/unittests/FindHeadersTest.cpp
index c5fc465ced7a75..84e02e1d0d621b 100644
--- a/clang-tools-extra/include-cleaner/unittests/FindHeadersTest.cpp
+++ b/clang-tools-extra/include-cleaner/unittests/FindHeadersTest.cpp
@@ -60,7 +60,7 @@ class FindHeadersTest : public testing::Test {
llvm::SmallVector<Hinted<Header>> findHeaders(llvm::StringRef FileName) {
return include_cleaner::findHeaders(
AST->sourceManager().translateFileLineCol(
- AST->fileManager().getFile(FileName).get(),
+ *AST->fileManager().getOptionalFileRef(FileName),
/*Line=*/1, /*Col=*/1),
AST->sourceManager(), &PI);
}
diff --git a/clang-tools-extra/include-cleaner/unittests/RecordTest.cpp b/clang-tools-extra/include-cleaner/unittests/RecordTest.cpp
index 0b05c9190cb67f..b5a7b9720903eb 100644
--- a/clang-tools-extra/include-cleaner/unittests/RecordTest.cpp
+++ b/clang-tools-extra/include-cleaner/unittests/RecordTest.cpp
@@ -234,7 +234,7 @@ TEST_F(RecordPPTest, CapturesMacroRefs) {
const auto &SM = AST.sourceManager();
SourceLocation Def = SM.getComposedLoc(
- SM.translateFile(AST.fileManager().getFile("header.h").get()),
+ SM.translateFile(*AST.fileManager().getOptionalFileRef("header.h")),
Header.point("def"));
ASSERT_THAT(Recorded.MacroReferences, Not(IsEmpty()));
Symbol OrigX = Recorded.MacroReferences.front().Target;
@@ -368,29 +368,29 @@ TEST_F(PragmaIncludeTest, IWYUKeep) {
TestAST Processed = build();
auto &FM = Processed.fileManager();
- EXPECT_FALSE(PI.shouldKeep(FM.getFile("normal.h").get()));
- EXPECT_FALSE(PI.shouldKeep(FM.getFile("std/vector").get()));
+ EXPECT_FALSE(PI.shouldKeep(*FM.getOptionalFileRef("normal.h")));
+ EXPECT_FALSE(PI.shouldKeep(*FM.getOptionalFileRef("std/vector")));
// Keep
- EXPECT_TRUE(PI.shouldKeep(FM.getFile("keep1.h").get()));
- EXPECT_TRUE(PI.shouldKeep(FM.getFile("keep2.h").get()));
- EXPECT_TRUE(PI.shouldKeep(FM.getFile("keep3.h").get()));
- EXPECT_TRUE(PI.shouldKeep(FM.getFile("keep4.h").get()));
- EXPECT_TRUE(PI.shouldKeep(FM.getFile("keep5.h").get()));
- EXPECT_TRUE(PI.shouldKeep(FM.getFile("keep6.h").get()));
- EXPECT_TRUE(PI.shouldKeep(FM.getFile("std/map").get()));
+ EXPECT_TRUE(PI.shouldKeep(*FM.getOptionalFileRef("keep1.h")));
+ EXPECT_TRUE(PI.shouldKeep(*FM.getOptionalFileRef("keep2.h")));
+ EXPECT_TRUE(PI.shouldKeep(*FM.getOptionalFileRef("keep3.h")));
+ EXPECT_TRUE(PI.shouldKeep(*FM.getOptionalFileRef("keep4.h")));
+ EXPECT_TRUE(PI.shouldKeep(*FM.getOptionalFileRef("keep5.h")));
+ EXPECT_TRUE(PI.shouldKeep(*FM.getOptionalFileRef("keep6.h")));
+ EXPECT_TRUE(PI.shouldKeep(*FM.getOptionalFileRef("std/map")));
// Exports
- EXPECT_TRUE(PI.shouldKeep(FM.getFile("export1.h").get()));
- EXPECT_TRUE(PI.shouldKeep(FM.getFile("export2.h").get()));
- EXPECT_TRUE(PI.shouldKeep(FM.getFile("export3.h").get()));
- EXPECT_TRUE(PI.shouldKeep(FM.getFile("std/set").get()));
+ EXPECT_TRUE(PI.shouldKeep(*FM.getOptionalFileRef("export1.h")));
+ EXPECT_TRUE(PI.shouldKeep(*FM.getOptionalFileRef("export2.h")));
+ EXPECT_TRUE(PI.shouldKeep(*FM.getOptionalFileRef("export3.h")));
+ EXPECT_TRUE(PI.shouldKeep(*FM.getOptionalFileRef("std/set")));
}
TEST_F(PragmaIncludeTest, AssociatedHeader) {
createEmptyFiles({"foo/main.h", "bar/main.h", "bar/other.h", "std/vector"});
auto IsKeep = [&](llvm::StringRef Name, TestAST &AST) {
- return PI.shouldKeep(AST.fileManager().getFile(Name).get());
+ return PI.shouldKeep(*AST.fileManager().getOptionalFileRef(Name));
};
Inputs.FileName = "main.cc";
@@ -452,19 +452,19 @@ TEST_F(PragmaIncludeTest, IWYUPrivate) {
// IWYU pragma: private
)cpp";
TestAST Processed = build();
- auto PrivateFE = Processed.fileManager().getFile("private.h");
+ auto PrivateFE = Processed.fileManager().getOptionalFileRef("private.h");
assert(PrivateFE);
- EXPECT_TRUE(PI.isPrivate(PrivateFE.get()));
- EXPECT_EQ(PI.getPublic(PrivateFE.get()), "\"public2.h\"");
+ EXPECT_TRUE(PI.isPrivate(*PrivateFE));
+ EXPECT_EQ(PI.getPublic(*PrivateFE), "\"public2.h\"");
- auto PublicFE = Processed.fileManager().getFile("public.h");
+ auto PublicFE = Processed.fileManager().getOptionalFileRef("public.h");
assert(PublicFE);
- EXPECT_EQ(PI.getPublic(PublicFE.get()), ""); // no mapping.
- EXPECT_FALSE(PI.isPrivate(PublicFE.get()));
+ EXPECT_EQ(PI.getPublic(*PublicFE), ""); // no mapping.
+ EXPECT_FALSE(PI.isPrivate(*PublicFE));
- auto Private2FE = Processed.fileManager().getFile("private2.h");
+ auto Private2FE = Processed.fileManager().getOptionalFileRef("private2.h");
assert(Private2FE);
- EXPECT_TRUE(PI.isPrivate(Private2FE.get()));
+ EXPECT_TRUE(PI.isPrivate(*Private2FE));
}
TEST_F(PragmaIncludeTest, IWYUExport) {
@@ -486,13 +486,13 @@ TEST_F(PragmaIncludeTest, IWYUExport) {
const auto &SM = Processed.sourceManager();
auto &FM = Processed.fileManager();
- EXPECT_THAT(PI.getExporters(FM.getFile("private.h").get(), FM),
+ EXPECT_THAT(PI.getExporters(*FM.getOptionalFileRef("private.h"), FM),
testing::UnorderedElementsAre(FileNamed("export1.h"),
FileNamed("export3.h")));
- EXPECT_TRUE(PI.getExporters(FM.getFile("export1.h").get(), FM).empty());
- EXPECT_TRUE(PI.getExporters(FM.getFile("export2.h").get(), FM).empty());
- EXPECT_TRUE(PI.getExporters(FM.getFile("export3.h").get(), FM).empty());
+ EXPECT_TRUE(PI.getExporters(*FM.getOptionalFileRef("export1.h"), FM).empty());
+ EXPECT_TRUE(PI.getExporters(*FM.getOptionalFileRef("export2.h"), FM).empty());
+ EXPECT_TRUE(PI.getExporters(*FM.getOptionalFileRef("export3.h"), FM).empty());
EXPECT_TRUE(
PI.getExporters(SM.getFileEntryForID(SM.getMainFileID()), FM).empty());
}
@@ -548,23 +548,23 @@ TEST_F(PragmaIncludeTest, IWYUExportBlock) {
}
return Result;
};
- auto Exporters = PI.getExporters(FM.getFile("private1.h").get(), FM);
+ auto Exporters = PI.getExporters(*FM.getOptionalFileRef("private1.h"), FM);
EXPECT_THAT(Exporters, testing::UnorderedElementsAre(FileNamed("export1.h"),
FileNamed("normal.h")))
<< GetNames(Exporters);
- Exporters = PI.getExporters(FM.getFile("private2.h").get(), FM);
+ Exporters = PI.getExporters(*FM.getOptionalFileRef("private2.h"), FM);
EXPECT_THAT(Exporters, testing::UnorderedElementsAre(FileNamed("export1.h")))
<< GetNames(Exporters);
- Exporters = PI.getExporters(FM.getFile("private3.h").get(), FM);
+ Exporters = PI.getExporters(*FM.getOptionalFileRef("private3.h"), FM);
EXPECT_THAT(Exporters, testing::UnorderedElementsAre(FileNamed("export1.h")))
<< GetNames(Exporters);
- Exporters = PI.getExporters(FM.getFile("foo.h").get(), FM);
+ Exporters = PI.getExporters(*FM.getOptionalFileRef("foo.h"), FM);
EXPECT_TRUE(Exporters.empty()) << GetNames(Exporters);
- Exporters = PI.getExporters(FM.getFile("bar.h").get(), FM);
+ Exporters = PI.getExporters(*FM.getOptionalFileRef("bar.h"), FM);
EXPECT_TRUE(Exporters.empty()) << GetNames(Exporters);
}
@@ -580,8 +580,8 @@ TEST_F(PragmaIncludeTest, SelfContained) {
Inputs.ExtraFiles["unguarded.h"] = "";
TestAST Processed = build();
auto &FM = Processed.fileManager();
- EXPECT_TRUE(PI.isSelfContained(FM.getFile("guarded.h").get()));
- EXPECT_FALSE(PI.isSelfContained(FM.getFile("unguarded.h").get()));
+ EXPECT_TRUE(PI.isSelfContained(*FM.getOptionalFileRef("guarded.h")));
+ EXPECT_FALSE(PI.isSelfContained(*FM.getOptionalFileRef("unguarded.h")));
}
TEST_F(PragmaIncludeTest, AlwaysKeep) {
@@ -596,8 +596,8 @@ TEST_F(PragmaIncludeTest, AlwaysKeep) {
Inputs.ExtraFiles["usual.h"] = "#pragma once";
TestAST Processed = build();
auto &FM = Processed.fileManager();
- EXPECT_TRUE(PI.shouldKeep(FM.getFile("always_keep.h").get()));
- EXPECT_FALSE(PI.shouldKeep(FM.getFile("usual.h").get()));
+ EXPECT_TRUE(PI.shouldKeep(*FM.getOptionalFileRef("always_keep.h")));
+ EXPECT_FALSE(PI.shouldKeep(*FM.getOptionalFileRef("usual.h")));
}
TEST_F(PragmaIncludeTest, ExportInUnnamedBuffer) {
@@ -653,13 +653,13 @@ TEST_F(PragmaIncludeTest, OutlivesFMAndSM) {
// Now this build gives us a new File&Source Manager.
TestAST Processed = build(/*ResetPragmaIncludes=*/false);
auto &FM = Processed.fileManager();
- auto PrivateFE = FM.getFile("private.h");
+ auto PrivateFE = FM.getOptionalFileRef("private.h");
assert(PrivateFE);
- EXPECT_EQ(PI.getPublic(PrivateFE.get()), "\"public.h\"");
+ EXPECT_EQ(PI.getPublic(*PrivateFE), "\"public.h\"");
- auto Private2FE = FM.getFile("private2.h");
+ auto Private2FE = FM.getOptionalFileRef("private2.h");
assert(Private2FE);
- EXPECT_THAT(PI.getExporters(Private2FE.get(), FM),
+ EXPECT_THAT(PI.getExporters(*Private2FE, FM),
testing::ElementsAre(llvm::cantFail(FM.getFileRef("public.h"))));
}
@@ -676,8 +676,8 @@ TEST_F(PragmaIncludeTest, CanRecordManyTimes) {
TestAST Processed = build();
auto &FM = Processed.fileManager();
- auto PrivateFE = FM.getFile("private.h");
- llvm::StringRef Public = PI.getPublic(PrivateFE.get());
+ auto PrivateFE = FM.getOptionalFileRef("private.h");
+ llvm::StringRef Public = PI.getPublic(*PrivateFE);
EXPECT_EQ(Public, "\"public.h\"");
// This build populates same PI during build, but this time we don't have
diff --git a/clang-tools-extra/unittests/include/common/VirtualFileHelper.h b/clang-tools-extra/unittests/include/common/VirtualFileHelper.h
index 18b98d2796e679..abe10674956949 100644
--- a/clang-tools-extra/unittests/include/common/VirtualFileHelper.h
+++ b/clang-tools-extra/unittests/include/common/VirtualFileHelper.h
@@ -60,7 +60,7 @@ class VirtualFileHelper {
I != E; ++I) {
std::unique_ptr<llvm::MemoryBuffer> Buf =
llvm::MemoryBuffer::getMemBuffer(I->Code);
- const FileEntry *Entry = SM.getFileManager().getVirtualFile(
+ FileEntryRef Entry = SM.getFileManager().getVirtualFileRef(
I->FileName, Buf->getBufferSize(), /*ModificationTime=*/0);
SM.overrideFileContents(Entry, std::move(Buf));
}
diff --git a/clang/include/clang/Basic/DiagnosticFrontendKinds.td b/clang/include/clang/Basic/DiagnosticFrontendKinds.td
index 292e4af1b3b303..a6b17ccb6799d2 100644
--- a/clang/include/clang/Basic/DiagnosticFrontendKinds.td
+++ b/clang/include/clang/Basic/DiagnosticFrontendKinds.td
@@ -109,8 +109,6 @@ def err_fe_expected_clang_command : Error<
"expected a clang compiler command">;
def err_fe_remap_missing_to_file : Error<
"could not remap file '%0' to the contents of file '%1'">, DefaultFatal;
-def err_fe_remap_missing_from_file : Error<
- "could not remap from missing file '%0'">, DefaultFatal;
def err_fe_unable_to_load_pch : Error<
"unable to load PCH file">;
def err_fe_unable_to_load_plugin : Error<
diff --git a/clang/include/clang/Basic/FileManager.h b/clang/include/clang/Basic/FileManager.h
index 74029a91d1a6d0..ce4e8c1fbe16eb 100644
--- a/clang/include/clang/Basic/FileManager.h
+++ b/clang/include/clang/Basic/FileManager.h
@@ -84,7 +84,7 @@ class FileManager : public RefCountedBase<FileManager> {
/// VirtualDirectoryEntries/VirtualFileEntries above.
///
llvm::StringMap<llvm::ErrorOr<DirectoryEntry &>, llvm::BumpPtrAllocator>
- SeenDirEntries;
+ SeenDirEntries;
/// A cache that maps paths to file entries (either real or
/// virtual) we have looked up, or an error that occurred when we looked up
@@ -190,6 +190,8 @@ class FileManager : public RefCountedBase<FileManager> {
///
/// \param CacheFailure If true and the file does not exist, we'll cache
/// the failure to find this file.
+ LLVM_DEPRECATED("Functions returning DirectoryEntry are deprecated.",
+ "getOptionalDirectoryRef()")
llvm::ErrorOr<const DirectoryEntry *>
getDirectory(StringRef DirName, bool CacheFailure = true);
@@ -207,6 +209,8 @@ class FileManager : public RefCountedBase<FileManager> {
///
/// \param CacheFailure If true and the file does not exist, we'll cache
/// the failure to find this file.
+ LLVM_DEPRECATED("Functions returning FileEntry are deprecated.",
+ "getOptionalFileRef()")
llvm::ErrorOr<const FileEntry *>
getFile(StringRef Filename, bool OpenFile = false, bool CacheFailure = true);
@@ -269,6 +273,8 @@ class FileManager : public RefCountedBase<FileManager> {
FileEntryRef getVirtualFileRef(StringRef Filename, off_t Size,
time_t ModificationTime);
+ LLVM_DEPRECATED("Functions returning FileEntry are deprecated.",
+ "getVirtualFileRef()")
const FileEntry *getVirtualFile(StringRef Filename, off_t Size,
time_t ModificationTime);
diff --git a/clang/lib/AST/ASTImporter.cpp b/clang/lib/AST/ASTImporter.cpp
index bba97e289da2e1..60175f1ccb342a 100644
--- a/clang/lib/AST/ASTImporter.cpp
+++ b/clang/lib/AST/ASTImporter.cpp
@@ -10020,8 +10020,8 @@ Expected<FileID> ASTImporter::Import(FileID FromID, bool IsBuiltin) {
ToIncludeLocOrFakeLoc = ToSM.getLocForStartOfFile(ToSM.getMainFileID());
if (Cache->OrigEntry && Cache->OrigEntry->getDir()) {
- // FIXME: We probably want to use getVirtualFile(), so we don't hit the
- // disk again
+ // FIXME: We probably want to use getVirtualFileRef(), so we don't hit
+ // the disk again
// FIXME: We definitely want to re-use the existing MemoryBuffer, rather
// than mmap the files several times.
auto Entry =
diff --git a/clang/lib/CodeGen/CodeGenAction.cpp b/clang/lib/CodeGen/CodeGenAction.cpp
index 883333f0924ddb..c9f9b688d0d8a2 100644
--- a/clang/lib/CodeGen/CodeGenAction.cpp
+++ b/clang/lib/CodeGen/CodeGenAction.cpp
@@ -586,9 +586,9 @@ const FullSourceLoc BackendConsumer::getBestLocationFromDebugLoc(
if (D.isLocationAvailable()) {
D.getLocation(Filename, Line, Column);
if (Line > 0) {
- auto FE = FileMgr.getFile(Filename);
+ auto FE = FileMgr.getOptionalFileRef(Filename);
if (!FE)
- FE = FileMgr.getFile(D.getAbsolutePath());
+ FE = FileMgr.getOptionalFileRef(D.getAbsolutePath());
if (FE) {
// If -gcolumn-info was not used, Column will be 0. This upsets the
// source manager, so pass 1 if Column is not set.
diff --git a/clang/lib/ExtractAPI/ExtractAPIConsumer.cpp b/clang/lib/ExtractAPI/ExtractAPIConsumer.cpp
index 75c2dec22400b9..6f42b36bd36a4b 100644
--- a/clang/lib/ExtractAPI/ExtractAPIConsumer.cpp
+++ b/clang/lib/ExtractAPI/ExtractAPIConsumer.cpp
@@ -217,8 +217,8 @@ struct LocationFileChecker {
SmallVector<std::pair<SmallString<32>, bool>> &KnownFiles)
: CI(CI), KnownFiles(KnownFiles), ExternalFileEntries() {
for (const auto &KnownFile : KnownFiles)
- if (auto FileEntry = CI.getFileManager().getFile(KnownFile.first))
- KnownFileEntries.insert(*FileEntry);
+ if (auto FE = CI.getFileManager().getOptionalFileRef(KnownFile.first))
+ KnownFileEntries.insert(*FE);
}
private:
diff --git a/clang/lib/Frontend/ASTUnit.cpp b/clang/lib/Frontend/ASTUnit.cpp
index 93836ec5402faa..bffff0d27af3ab 100644
--- a/clang/lib/Frontend/ASTUnit.cpp
+++ b/clang/lib/Frontend/ASTUnit.cpp
@@ -2395,7 +2395,7 @@ void ASTUnit::TranslateStoredDiagnostics(
// Rebuild the StoredDiagnostic.
if (SD.Filename.empty())
continue;
- auto FE = FileMgr.getFile(SD.Filename);
+ auto FE = FileMgr.getOptionalFileRef(SD.Filename);
if (!FE)
continue;
SourceLocation FileLoc;
diff --git a/clang/lib/Frontend/CompilerInstance.cpp b/clang/lib/Frontend/CompilerInstance.cpp
index 5f2a9637e3ea46..0089786379d3ea 100644
--- a/clang/lib/Frontend/CompilerInstance.cpp
+++ b/clang/lib/Frontend/CompilerInstance.cpp
@@ -427,12 +427,8 @@ static void InitializeFileRemapping(DiagnosticsEngine &Diags,
}
// Create the file entry for the file that we're mapping from.
- const FileEntry *FromFile =
- FileMgr.getVirtualFile(RF.first, ToFile->getSize(), 0);
- if (!FromFile) {
- Diags.Report(diag::err_fe_remap_missing_from_file) << RF.first;
- continue;
- }
+ FileEntryRef FromFile =
+ FileMgr.getVirtualFileRef(RF.first, ToFile->getSize(), 0);
// Override the contents of the "from" file with the contents of
// the "to" file.
@@ -1925,8 +1921,8 @@ ModuleLoadResult CompilerInstance::findOrCompileModuleAndReadAST(
M = HS.lookupModule(ModuleName, ImportLoc, true, !IsInclusionDirective);
// Check whether M refers to the file in the prebuilt module path.
- if (M && M->getASTFile())
- if (auto ModuleFile = FileMgr->getFile(ModuleFilename))
+ if (M && M->getASTFile() && M->getASTFile())
+ if (auto ModuleFile = FileMgr->getOptionalFileRef(ModuleFilename))
if (*ModuleFile == M->getASTFile())
return M;
diff --git a/clang/lib/Frontend/Rewrite/FrontendActions.cpp b/clang/lib/Frontend/Rewrite/FrontendActions.cpp
index cf5a9437e89e6c..6e1f949f543a51 100644
--- a/clang/lib/Frontend/Rewrite/FrontendActions.cpp
+++ b/clang/lib/Frontend/Rewrite/FrontendActions.cpp
@@ -213,7 +213,7 @@ class RewriteIncludesAction::RewriteImportsListener : public ASTReaderListener {
void visitModuleFile(StringRef Filename,
serialization::ModuleKind Kind) override {
- auto File = CI.getFileManager().getFile(Filename);
+ auto File = CI.getFileManager().getOptionalFileRef(Filename);
assert(File && "missing file for loaded module?");
// Only rewrite each module file once.
diff --git a/clang/lib/InstallAPI/Frontend.cpp b/clang/lib/InstallAPI/Frontend.cpp
index 04d06f46d26520..2ebe72bf021cf9 100644
--- a/clang/lib/InstallAPI/Frontend.cpp
+++ b/clang/lib/InstallAPI/Frontend.cpp
@@ -107,7 +107,7 @@ InstallAPIContext::findAndRecordFile(const FileEntry *FE,
}
void InstallAPIContext::a...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/110014
More information about the cfe-commits
mailing list