Skip to content

Commit 2c3a949

Browse files
committed
[clang][cas] Move IncludeFile[List] to IncludeTree::File[List] NFC
(cherry picked from commit 7caa9d9)
1 parent fa13d21 commit 2c3a949

File tree

4 files changed

+72
-70
lines changed

4 files changed

+72
-70
lines changed

clang/include/clang/CAS/IncludeTree.h

Lines changed: 26 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,9 @@ template <typename NodeT> class IncludeTreeBase : public ObjectProxy {
3939
return Node.getData().startswith(NodeT::getNodeKind());
4040
}
4141

42-
friend class IncludeFile;
43-
friend class IncludeFileList;
44-
friend class IncludeTree;
45-
friend class IncludeTreeRoot;
42+
friend NodeT;
4643
};
4744

48-
class IncludeFile;
49-
5045
/// Represents a DAG of included files by the preprocessor.
5146
/// Each node in the DAG represents a particular inclusion of a file that
5247
/// encompasses inclusions of other files as sub-trees, along with all the
@@ -56,7 +51,10 @@ class IncludeTree : public IncludeTreeBase<IncludeTree> {
5651
public:
5752
static constexpr StringRef getNodeKind() { return "Tree"; }
5853

59-
Expected<IncludeFile> getBaseFile();
54+
class File;
55+
class FileList;
56+
57+
Expected<File> getBaseFile();
6058

6159
/// The include file that resulted in this include-tree.
6260
ObjectRef getBaseFileRef() const { return getReference(0); }
@@ -152,7 +150,7 @@ class IncludeTree : public IncludeTreeBase<IncludeTree> {
152150

153151
/// Represents a \p SourceManager file (or buffer in the case of preprocessor
154152
/// predefines) that got included by the preprocessor.
155-
class IncludeFile : public IncludeTreeBase<IncludeFile> {
153+
class IncludeTree::File : public IncludeTreeBase<File> {
156154
public:
157155
static constexpr StringRef getNodeKind() { return "File"; }
158156

@@ -167,7 +165,7 @@ class IncludeFile : public IncludeTreeBase<IncludeFile> {
167165
return getCAS().getProxy(getContentsRef());
168166
}
169167

170-
Expected<IncludeTree::FileInfo> getFileInfo() {
168+
Expected<FileInfo> getFileInfo() {
171169
auto Filename = getFilename();
172170
if (!Filename)
173171
return Filename.takeError();
@@ -177,8 +175,8 @@ class IncludeFile : public IncludeTreeBase<IncludeFile> {
177175
return IncludeTree::FileInfo{Filename->getData(), Contents->getData()};
178176
}
179177

180-
static Expected<IncludeFile> create(ObjectStore &DB, StringRef Filename,
181-
ObjectRef Contents);
178+
static Expected<File> create(ObjectStore &DB, StringRef Filename,
179+
ObjectRef Contents);
182180

183181
llvm::Error print(llvm::raw_ostream &OS, unsigned Indent = 0);
184182

@@ -198,20 +196,20 @@ class IncludeFile : public IncludeTreeBase<IncludeFile> {
198196
}
199197

200198
private:
201-
friend class IncludeTreeBase<IncludeFile>;
202-
friend class IncludeFileList;
199+
friend class IncludeTreeBase<File>;
200+
friend class FileList;
203201
friend class IncludeTree;
204202
friend class IncludeTreeRoot;
205203

206-
explicit IncludeFile(ObjectProxy Node) : IncludeTreeBase(std::move(Node)) {
204+
explicit File(ObjectProxy Node) : IncludeTreeBase(std::move(Node)) {
207205
assert(isValid(*this));
208206
}
209207
};
210208

211-
/// A flat list of \p IncludeFile entries. This is used along with a simple
209+
/// A flat list of \c File entries. This is used along with a simple
212210
/// implementation of a \p vfs::FileSystem produced via
213211
/// \p createIncludeTreeFileSystem().
214-
class IncludeFileList : public IncludeTreeBase<IncludeFileList> {
212+
class IncludeTree::FileList : public IncludeTreeBase<FileList> {
215213
public:
216214
static constexpr StringRef getNodeKind() { return "List"; }
217215

@@ -224,12 +222,12 @@ class IncludeFileList : public IncludeTreeBase<IncludeFileList> {
224222
return getReference(I);
225223
}
226224

227-
Expected<IncludeFile> getFile(size_t I) { return getFile(getFileRef(I)); }
225+
Expected<File> getFile(size_t I) { return getFile(getFileRef(I)); }
228226
FileSizeTy getFileSize(size_t I) const;
229227

230-
/// \returns each \p IncludeFile entry along with its file size.
231-
llvm::Error forEachFile(
232-
llvm::function_ref<llvm::Error(IncludeFile, FileSizeTy)> Callback);
228+
/// \returns each \c File entry along with its file size.
229+
llvm::Error
230+
forEachFile(llvm::function_ref<llvm::Error(File, FileSizeTy)> Callback);
233231

234232
/// We record the file size as well to avoid needing to materialize the
235233
/// underlying buffer for the \p IncludeTreeFileSystem::status()
@@ -238,27 +236,25 @@ class IncludeFileList : public IncludeTreeBase<IncludeFileList> {
238236
ObjectRef FileRef;
239237
FileSizeTy Size;
240238
};
241-
static Expected<IncludeFileList> create(ObjectStore &DB,
242-
ArrayRef<FileEntry> Files);
239+
static Expected<FileList> create(ObjectStore &DB, ArrayRef<FileEntry> Files);
243240

244-
static Expected<IncludeFileList> get(ObjectStore &CAS, ObjectRef Ref);
241+
static Expected<FileList> get(ObjectStore &CAS, ObjectRef Ref);
245242

246243
llvm::Error print(llvm::raw_ostream &OS, unsigned Indent = 0);
247244

248245
private:
249-
friend class IncludeTreeBase<IncludeFileList>;
246+
friend class IncludeTreeBase<FileList>;
250247
friend class IncludeTreeRoot;
251248

252-
explicit IncludeFileList(ObjectProxy Node)
253-
: IncludeTreeBase(std::move(Node)) {
249+
explicit FileList(ObjectProxy Node) : IncludeTreeBase(std::move(Node)) {
254250
assert(isValid(*this));
255251
}
256252

257-
Expected<IncludeFile> getFile(ObjectRef Ref) {
253+
Expected<File> getFile(ObjectRef Ref) {
258254
auto Node = getCAS().getProxy(Ref);
259255
if (!Node)
260256
return Node.takeError();
261-
return IncludeFile(std::move(*Node));
257+
return File(std::move(*Node));
262258
}
263259

264260
static bool isValid(const ObjectProxy &Node);
@@ -294,11 +290,11 @@ class IncludeTreeRoot : public IncludeTreeBase<IncludeTreeRoot> {
294290
return IncludeTree(std::move(*Node));
295291
}
296292

297-
Expected<IncludeFileList> getFileList() {
293+
Expected<IncludeTree::FileList> getFileList() {
298294
auto Node = getCAS().getProxy(getFileListRef());
299295
if (!Node)
300296
return Node.takeError();
301-
return IncludeFileList(std::move(*Node));
297+
return IncludeTree::FileList(std::move(*Node));
302298
}
303299

304300
Expected<std::optional<StringRef>> getPCHBuffer() {

clang/lib/CAS/IncludeTree.cpp

Lines changed: 26 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -33,20 +33,21 @@ Expected<NodeT> IncludeTreeBase<NodeT>::create(ObjectStore &DB,
3333
return NodeT(*Proxy);
3434
}
3535

36-
Expected<IncludeFile> IncludeFile::create(ObjectStore &DB, StringRef Filename,
37-
ObjectRef Contents) {
36+
Expected<IncludeTree::File> IncludeTree::File::create(ObjectStore &DB,
37+
StringRef Filename,
38+
ObjectRef Contents) {
3839
auto PathRef = DB.storeFromString({}, Filename);
3940
if (!PathRef)
4041
return PathRef.takeError();
4142
std::array<ObjectRef, 2> Refs{*PathRef, Contents};
4243
return IncludeTreeBase::create(DB, Refs, {});
4344
}
4445

45-
Expected<IncludeFile> IncludeTree::getBaseFile() {
46+
Expected<IncludeTree::File> IncludeTree::getBaseFile() {
4647
auto Node = getCAS().getProxy(getBaseFileRef());
4748
if (!Node)
4849
return Node.takeError();
49-
return IncludeFile(std::move(*Node));
50+
return File(std::move(*Node));
5051
}
5152

5253
Expected<IncludeTree::FileInfo> IncludeTree::getBaseFileInfo() {
@@ -85,7 +86,7 @@ Expected<IncludeTree> IncludeTree::create(
8586

8687
char Kind = FileCharacteristic;
8788
assert(Kind == FileCharacteristic && "SrcMgr::CharacteristicKind too big!");
88-
assert(IncludeFile::isValid(DB, BaseFile));
89+
assert(File::isValid(DB, BaseFile));
8990
SmallVector<ObjectRef, 16> Refs;
9091
Refs.reserve(Includes.size() + 1);
9192
Refs.push_back(BaseFile);
@@ -169,16 +170,17 @@ bool IncludeTree::isValid(const ObjectProxy &Node) {
169170
return Base.getData().size() >= NumIncludes * sizeof(uint32_t) + 1;
170171
}
171172

172-
IncludeFileList::FileSizeTy IncludeFileList::getFileSize(size_t I) const {
173+
IncludeTree::FileList::FileSizeTy
174+
IncludeTree::FileList::getFileSize(size_t I) const {
173175
assert(I < getNumFiles());
174176
StringRef Data = getData();
175177
assert(Data.size() >= (I + 1) * sizeof(FileSizeTy));
176178
return llvm::support::endian::read<FileSizeTy, llvm::support::little>(
177179
Data.data() + I * sizeof(FileSizeTy));
178180
}
179181

180-
llvm::Error IncludeFileList::forEachFile(
181-
llvm::function_ref<llvm::Error(IncludeFile, FileSizeTy)> Callback) {
182+
llvm::Error IncludeTree::FileList::forEachFile(
183+
llvm::function_ref<llvm::Error(File, FileSizeTy)> Callback) {
182184
size_t I = 0;
183185
return forEachReference([&](ObjectRef Ref) -> llvm::Error {
184186
auto Include = getFile(Ref);
@@ -188,8 +190,8 @@ llvm::Error IncludeFileList::forEachFile(
188190
});
189191
}
190192

191-
Expected<IncludeFileList> IncludeFileList::create(ObjectStore &DB,
192-
ArrayRef<FileEntry> Files) {
193+
Expected<IncludeTree::FileList>
194+
IncludeTree::FileList::create(ObjectStore &DB, ArrayRef<FileEntry> Files) {
193195
SmallVector<ObjectRef, 16> Refs;
194196
Refs.reserve(Files.size());
195197
SmallString<256> Buffer;
@@ -199,24 +201,25 @@ Expected<IncludeFileList> IncludeFileList::create(ObjectStore &DB,
199201
llvm::support::endian::Writer Writer(BufOS, llvm::support::little);
200202

201203
for (const FileEntry &Entry : Files) {
202-
assert(IncludeFile::isValid(DB, Entry.FileRef));
204+
assert(File::isValid(DB, Entry.FileRef));
203205
Refs.push_back(Entry.FileRef);
204206
Writer.write(Entry.Size);
205207
}
206208
return IncludeTreeBase::create(DB, Refs, Buffer);
207209
}
208210

209-
Expected<IncludeFileList> IncludeFileList::get(ObjectStore &DB, ObjectRef Ref) {
211+
Expected<IncludeTree::FileList> IncludeTree::FileList::get(ObjectStore &DB,
212+
ObjectRef Ref) {
210213
auto Node = DB.getProxy(Ref);
211214
if (!Node)
212215
return Node.takeError();
213216
if (!isValid(*Node))
214217
return llvm::createStringError(llvm::inconvertibleErrorCode(),
215218
"not a IncludeFileList node kind");
216-
return IncludeFileList(std::move(*Node));
219+
return FileList(std::move(*Node));
217220
}
218221

219-
bool IncludeFileList::isValid(const ObjectProxy &Node) {
222+
bool IncludeTree::FileList::isValid(const ObjectProxy &Node) {
220223
if (!IncludeTreeBase::isValid(Node))
221224
return false;
222225
IncludeTreeBase Base(Node);
@@ -229,7 +232,7 @@ Expected<IncludeTreeRoot>
229232
IncludeTreeRoot::create(ObjectStore &DB, ObjectRef MainFileTree,
230233
ObjectRef FileList, std::optional<ObjectRef> PCHRef) {
231234
assert(IncludeTree::isValid(DB, MainFileTree));
232-
assert(IncludeFileList::isValid(DB, FileList));
235+
assert(IncludeTree::FileList::isValid(DB, FileList));
233236
if (PCHRef) {
234237
return IncludeTreeBase::create(DB, {MainFileTree, FileList, *PCHRef}, {});
235238
} else {
@@ -247,7 +250,7 @@ Expected<IncludeTreeRoot> IncludeTreeRoot::get(ObjectStore &DB, ObjectRef Ref) {
247250
return IncludeTreeRoot(std::move(*Node));
248251
}
249252

250-
llvm::Error IncludeFile::print(llvm::raw_ostream &OS, unsigned Indent) {
253+
llvm::Error IncludeTree::File::print(llvm::raw_ostream &OS, unsigned Indent) {
251254
auto Filename = getFilename();
252255
if (!Filename)
253256
return Filename.takeError();
@@ -281,8 +284,9 @@ llvm::Error IncludeTree::print(llvm::raw_ostream &OS, unsigned Indent) {
281284
});
282285
}
283286

284-
llvm::Error IncludeFileList::print(llvm::raw_ostream &OS, unsigned Indent) {
285-
return forEachFile([&](cas::IncludeFile File, FileSizeTy) -> llvm::Error {
287+
llvm::Error IncludeTree::FileList::print(llvm::raw_ostream &OS,
288+
unsigned Indent) {
289+
return forEachFile([&](File File, FileSizeTy) -> llvm::Error {
286290
return File.print(OS, Indent);
287291
});
288292
}
@@ -299,7 +303,7 @@ llvm::Error IncludeTreeRoot::print(llvm::raw_ostream &OS, unsigned Indent) {
299303
if (llvm::Error E = MainTree->print(OS.indent(Indent), Indent))
300304
return E;
301305
OS.indent(Indent) << "Files:\n";
302-
std::optional<cas::IncludeFileList> List;
306+
std::optional<IncludeTree::FileList> List;
303307
if (llvm::Error E = getFileList().moveInto(List))
304308
return E;
305309
return List->print(OS, Indent);
@@ -347,7 +351,7 @@ class IncludeTreeFileSystem : public llvm::vfs::FileSystem {
347351

348352
struct FileEntry {
349353
cas::ObjectRef ContentsRef;
350-
IncludeFileList::FileSizeTy Size;
354+
IncludeTree::FileList::FileSizeTy Size;
351355
llvm::sys::fs::UniqueID UniqueID;
352356
};
353357

@@ -450,7 +454,8 @@ cas::createIncludeTreeFileSystem(IncludeTreeRoot &Root) {
450454
IntrusiveRefCntPtr<IncludeTreeFileSystem> IncludeTreeFS =
451455
new IncludeTreeFileSystem(Root.getCAS());
452456
llvm::Error E = FileList->forEachFile(
453-
[&](IncludeFile File, IncludeFileList::FileSizeTy Size) -> llvm::Error {
457+
[&](IncludeTree::File File,
458+
IncludeTree::FileList::FileSizeTy Size) -> llvm::Error {
454459
auto FilenameBlob = File.getFilename();
455460
if (!FilenameBlob)
456461
return FilenameBlob.takeError();

clang/lib/Tooling/DependencyScanning/IncludeTreeActionController.cpp

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,8 @@ class IncludeTreeBuilder {
9797
Expected<cas::ObjectRef> getObjectForBuffer(const SrcMgr::FileInfo &FI);
9898
Expected<cas::ObjectRef> addToFileList(FileManager &FM, const FileEntry *FE);
9999
Expected<cas::IncludeTree> getCASTreeForFileIncludes(FilePPState &&PPState);
100-
Expected<cas::IncludeFile> createIncludeFile(StringRef Filename,
101-
cas::ObjectRef Contents);
100+
Expected<cas::IncludeTree::File> createIncludeFile(StringRef Filename,
101+
cas::ObjectRef Contents);
102102

103103
bool hasErrorOccurred() const { return ErrorToReport.has_value(); }
104104

@@ -120,7 +120,7 @@ class IncludeTreeBuilder {
120120
// are recorded in the PCH, ordered by \p FileEntry::UID index.
121121
SmallVector<StringRef> PreIncludedFileNames;
122122
llvm::BitVector SeenIncludeFiles;
123-
SmallVector<cas::IncludeFileList::FileEntry> IncludedFiles;
123+
SmallVector<cas::IncludeTree::FileList::FileEntry> IncludedFiles;
124124
std::optional<cas::ObjectRef> PredefinesBufferRef;
125125
std::optional<cas::ObjectRef> ModuleIncludesBufferRef;
126126
std::optional<cas::ObjectRef> ModuleMapFileRef;
@@ -447,7 +447,7 @@ IncludeTreeBuilder::finishIncludeTree(CompilerInstance &ScanInstance,
447447
getCASTreeForFileIncludes(IncludeStack.pop_back_val());
448448
if (!MainIncludeTree)
449449
return MainIncludeTree.takeError();
450-
auto FileList = cas::IncludeFileList::create(DB, IncludedFiles);
450+
auto FileList = cas::IncludeTree::FileList::create(DB, IncludedFiles);
451451
if (!FileList)
452452
return FileList.takeError();
453453

@@ -509,7 +509,8 @@ IncludeTreeBuilder::getObjectForBuffer(const SrcMgr::FileInfo &FI) {
509509
{}, FI.getContentCache().getBufferIfLoaded()->getBuffer());
510510
if (!Ref)
511511
return Ref.takeError();
512-
Expected<cas::IncludeFile> FileNode = createIncludeFile(FI.getName(), *Ref);
512+
Expected<cas::IncludeTree::File> FileNode =
513+
createIncludeFile(FI.getName(), *Ref);
513514
if (!FileNode)
514515
return FileNode.takeError();
515516
return FileNode->getRef();
@@ -531,7 +532,7 @@ IncludeTreeBuilder::addToFileList(FileManager &FM, const FileEntry *FE) {
531532
return FileNode.takeError();
532533
IncludedFiles.push_back(
533534
{FileNode->getRef(),
534-
static_cast<cas::IncludeFileList::FileSizeTy>(FE->getSize())});
535+
static_cast<cas::IncludeTree::FileList::FileSizeTy>(FE->getSize())});
535536
return FileNode->getRef();
536537
};
537538

@@ -554,15 +555,15 @@ IncludeTreeBuilder::getCASTreeForFileIncludes(FilePPState &&PPState) {
554555
PPState.Includes, PPState.HasIncludeChecks);
555556
}
556557

557-
Expected<cas::IncludeFile>
558+
Expected<cas::IncludeTree::File>
558559
IncludeTreeBuilder::createIncludeFile(StringRef Filename,
559560
cas::ObjectRef Contents) {
560561
SmallString<256> MappedPath;
561562
if (!PrefixMapper.empty()) {
562563
PrefixMapper.map(Filename, MappedPath);
563564
Filename = MappedPath;
564565
}
565-
return cas::IncludeFile::create(DB, Filename, std::move(Contents));
566+
return cas::IncludeTree::File::create(DB, Filename, std::move(Contents));
566567
}
567568

568569
std::unique_ptr<DependencyActionController>

0 commit comments

Comments
 (0)