Skip to content

Commit 27254ae

Browse files
authoredOct 3, 2023
[clang] NFCI: Use FileEntryRef for FileID creation (#67838)
This patch removes the `SourceManager` APIs that create `FileID` from a `const FileEntry *` in favor of APIs that take `FileEntryRef`. This also removes a misleading documentation that claims `nullptr` file entry represents stdin. I don't think that's right, since we just try to dereference that pointer anyways.
1 parent c6fed74 commit 27254ae

File tree

11 files changed

+20
-40
lines changed

11 files changed

+20
-40
lines changed
 

‎clang-tools-extra/clang-change-namespace/tool/ClangChangeNamespace.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -152,8 +152,8 @@ int main(int argc, const char **argv) {
152152
for (auto I = ChangedFiles.begin(), E = ChangedFiles.end(); I != E; ++I) {
153153
OS << " {\n";
154154
OS << " \"FilePath\": \"" << *I << "\",\n";
155-
const auto Entry = FileMgr.getFile(*I);
156-
auto ID = Sources.getOrCreateFileID(*Entry, SrcMgr::C_User);
155+
auto Entry = llvm::cantFail(FileMgr.getFileRef(*I));
156+
auto ID = Sources.getOrCreateFileID(Entry, SrcMgr::C_User);
157157
std::string Content;
158158
llvm::raw_string_ostream ContentStream(Content);
159159
Rewrite.getEditBuffer(ID).write(ContentStream);
@@ -170,9 +170,9 @@ int main(int argc, const char **argv) {
170170
}
171171

172172
for (const auto &File : ChangedFiles) {
173-
const auto Entry = FileMgr.getFile(File);
173+
auto Entry = llvm::cantFail(FileMgr.getFileRef(File));
174174

175-
auto ID = Sources.getOrCreateFileID(*Entry, SrcMgr::C_User);
175+
auto ID = Sources.getOrCreateFileID(Entry, SrcMgr::C_User);
176176
outs() << "============== " << File << " ==============\n";
177177
Rewrite.getEditBuffer(ID).write(llvm::outs());
178178
outs() << "\n============================================\n";

‎clang-tools-extra/clang-move/Move.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -843,7 +843,7 @@ void ClangMoveTool::moveDeclsToNewFiles() {
843843
// Move all contents from OldFile to NewFile.
844844
void ClangMoveTool::moveAll(SourceManager &SM, StringRef OldFile,
845845
StringRef NewFile) {
846-
auto FE = SM.getFileManager().getFile(makeAbsolutePath(OldFile));
846+
auto FE = SM.getFileManager().getOptionalFileRef(makeAbsolutePath(OldFile));
847847
if (!FE) {
848848
llvm::errs() << "Failed to get file: " << OldFile << "\n";
849849
return;

‎clang-tools-extra/clang-reorder-fields/tool/ClangReorderFields.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,8 @@ int main(int argc, const char **argv) {
8484
Tool.applyAllReplacements(Rewrite);
8585

8686
for (const auto &File : Files) {
87-
auto Entry = FileMgr.getFile(File);
88-
const auto ID = Sources.getOrCreateFileID(*Entry, SrcMgr::C_User);
87+
auto Entry = llvm::cantFail(FileMgr.getFileRef(File));
88+
const auto ID = Sources.getOrCreateFileID(Entry, SrcMgr::C_User);
8989
Rewrite.getEditBuffer(ID).write(outs());
9090
}
9191

‎clang-tools-extra/clang-tidy/ClangTidy.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ class ErrorReporter {
243243
if (FilePath.empty())
244244
return {};
245245

246-
auto File = SourceMgr.getFileManager().getFile(FilePath);
246+
auto File = SourceMgr.getFileManager().getOptionalFileRef(FilePath);
247247
if (!File)
248248
return {};
249249

‎clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -194,9 +194,9 @@ DiagnosticBuilder ClangTidyContext::diag(
194194

195195
DiagnosticBuilder ClangTidyContext::diag(const tooling::Diagnostic &Error) {
196196
SourceManager &SM = DiagEngine->getSourceManager();
197-
llvm::ErrorOr<const FileEntry *> File =
198-
SM.getFileManager().getFile(Error.Message.FilePath);
199-
FileID ID = SM.getOrCreateFileID(*File, SrcMgr::C_User);
197+
FileManager &FM = SM.getFileManager();
198+
FileEntryRef File = llvm::cantFail(FM.getFileRef(Error.Message.FilePath));
199+
FileID ID = SM.getOrCreateFileID(File, SrcMgr::C_User);
200200
SourceLocation FileStartLoc = SM.getLocForStartOfFile(ID);
201201
SourceLocation Loc = FileStartLoc.getLocWithOffset(
202202
static_cast<SourceLocation::IntTy>(Error.Message.FileOffset));

‎clang/include/clang/Basic/SourceManager.h

+1-8
Original file line numberDiff line numberDiff line change
@@ -877,13 +877,6 @@ class SourceManager : public RefCountedBase<SourceManager> {
877877

878878
/// Create a new FileID that represents the specified file
879879
/// being \#included from the specified IncludePosition.
880-
///
881-
/// This translates NULL into standard input.
882-
FileID createFileID(const FileEntry *SourceFile, SourceLocation IncludePos,
883-
SrcMgr::CharacteristicKind FileCharacter,
884-
int LoadedID = 0,
885-
SourceLocation::UIntTy LoadedOffset = 0);
886-
887880
FileID createFileID(FileEntryRef SourceFile, SourceLocation IncludePos,
888881
SrcMgr::CharacteristicKind FileCharacter,
889882
int LoadedID = 0,
@@ -909,7 +902,7 @@ class SourceManager : public RefCountedBase<SourceManager> {
909902

910903
/// Get the FileID for \p SourceFile if it exists. Otherwise, create a
911904
/// new FileID for the \p SourceFile.
912-
FileID getOrCreateFileID(const FileEntry *SourceFile,
905+
FileID getOrCreateFileID(FileEntryRef SourceFile,
913906
SrcMgr::CharacteristicKind FileCharacter);
914907

915908
/// Creates an expansion SLocEntry for the substitution of an argument into a

‎clang/lib/Basic/SourceManager.cpp

+4-14
Original file line numberDiff line numberDiff line change
@@ -527,17 +527,6 @@ FileID SourceManager::getNextFileID(FileID FID) const {
527527

528528
/// Create a new FileID that represents the specified file
529529
/// being \#included from the specified IncludePosition.
530-
///
531-
/// This translates NULL into standard input.
532-
FileID SourceManager::createFileID(const FileEntry *SourceFile,
533-
SourceLocation IncludePos,
534-
SrcMgr::CharacteristicKind FileCharacter,
535-
int LoadedID,
536-
SourceLocation::UIntTy LoadedOffset) {
537-
return createFileID(SourceFile->getLastRef(), IncludePos, FileCharacter,
538-
LoadedID, LoadedOffset);
539-
}
540-
541530
FileID SourceManager::createFileID(FileEntryRef SourceFile,
542531
SourceLocation IncludePos,
543532
SrcMgr::CharacteristicKind FileCharacter,
@@ -585,7 +574,7 @@ FileID SourceManager::createFileID(const llvm::MemoryBufferRef &Buffer,
585574
/// Get the FileID for \p SourceFile if it exists. Otherwise, create a
586575
/// new FileID for the \p SourceFile.
587576
FileID
588-
SourceManager::getOrCreateFileID(const FileEntry *SourceFile,
577+
SourceManager::getOrCreateFileID(FileEntryRef SourceFile,
589578
SrcMgr::CharacteristicKind FileCharacter) {
590579
FileID ID = translateFile(SourceFile);
591580
return ID.isValid() ? ID : createFileID(SourceFile, SourceLocation(),
@@ -2375,8 +2364,9 @@ SourceManagerForFile::SourceManagerForFile(StringRef FileName,
23752364
IntrusiveRefCntPtr<DiagnosticIDs>(new DiagnosticIDs),
23762365
new DiagnosticOptions);
23772366
SourceMgr = std::make_unique<SourceManager>(*Diagnostics, *FileMgr);
2378-
FileID ID = SourceMgr->createFileID(*FileMgr->getFile(FileName),
2379-
SourceLocation(), clang::SrcMgr::C_User);
2367+
FileEntryRef FE = llvm::cantFail(FileMgr->getFileRef(FileName));
2368+
FileID ID =
2369+
SourceMgr->createFileID(FE, SourceLocation(), clang::SrcMgr::C_User);
23802370
assert(ID.isValid());
23812371
SourceMgr->setMainFileID(ID);
23822372
}

‎clang/lib/Tooling/Core/Replacement.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ bool Replacement::isApplicable() const {
6767

6868
bool Replacement::apply(Rewriter &Rewrite) const {
6969
SourceManager &SM = Rewrite.getSourceMgr();
70-
auto Entry = SM.getFileManager().getFile(FilePath);
70+
auto Entry = SM.getFileManager().getOptionalFileRef(FilePath);
7171
if (!Entry)
7272
return false;
7373

‎clang/lib/Tooling/Refactoring.cpp

+1-4
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,7 @@ bool formatAndApplyAllReplacements(
7878
const std::string &FilePath = FileAndReplaces.first;
7979
auto &CurReplaces = FileAndReplaces.second;
8080

81-
const FileEntry *Entry = nullptr;
82-
if (auto File = Files.getFile(FilePath))
83-
Entry = *File;
84-
81+
FileEntryRef Entry = llvm::cantFail(Files.getFileRef(FilePath));
8582
FileID ID = SM.getOrCreateFileID(Entry, SrcMgr::C_User);
8683
StringRef Code = SM.getBufferData(ID);
8784

‎clang/tools/clang-rename/ClangRename.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ int main(int argc, const char **argv) {
228228

229229
Tool.applyAllReplacements(Rewrite);
230230
for (const auto &File : Files) {
231-
auto Entry = FileMgr.getFile(File);
231+
auto Entry = FileMgr.getOptionalFileRef(File);
232232
if (!Entry) {
233233
errs() << "clang-rename: " << File << " does not exist.\n";
234234
return 1;

‎clang/unittests/Analysis/UnsafeBufferUsageTest.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class UnsafeBufferUsageTest : public ::testing::Test {
2525
} // namespace
2626

2727
TEST_F(UnsafeBufferUsageTest, FixItHintsConflict) {
28-
const FileEntry *DummyFile = FileMgr.getVirtualFile("<virtual>", 100, 0);
28+
FileEntryRef DummyFile = FileMgr.getVirtualFileRef("<virtual>", 100, 0);
2929
FileID DummyFileID = SourceMgr.getOrCreateFileID(DummyFile, SrcMgr::C_User);
3030
SourceLocation StartLoc = SourceMgr.getLocForStartOfFile(DummyFileID);
3131

0 commit comments

Comments
 (0)
Please sign in to comment.