Skip to content

Commit 2bace49

Browse files
committed
Address code review comments.
1 parent 584a2f9 commit 2bace49

File tree

4 files changed

+62
-63
lines changed

4 files changed

+62
-63
lines changed

clang/lib/Tooling/DependencyScanning/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ add_clang_library(clangDependencyScanning
1010
DependencyScanningService.cpp
1111
DependencyScanningWorker.cpp
1212
DependencyScanningTool.cpp
13-
DependencyScanner.cpp
13+
DependencyScannerImpl.cpp
1414
InProcessModuleCache.cpp
1515
ModuleDepCollector.cpp
1616

clang/lib/Tooling/DependencyScanning/DependencyScanner.cpp renamed to clang/lib/Tooling/DependencyScanning/DependencyScannerImpl.cpp

Lines changed: 59 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9-
#include "DependencyScanner.h"
9+
#include "DependencyScannerImpl.h"
1010
#include "clang/Basic/DiagnosticFrontend.h"
1111
#include "clang/Basic/DiagnosticSerialization.h"
1212
#include "clang/Frontend/FrontendActions.h"
@@ -42,32 +42,6 @@ class DependencyConsumerForwarder : public DependencyFileGenerator {
4242
DependencyConsumer &C;
4343
};
4444

45-
class ScanningDependencyDirectivesGetter : public DependencyDirectivesGetter {
46-
DependencyScanningWorkerFilesystem *DepFS;
47-
48-
public:
49-
ScanningDependencyDirectivesGetter(FileManager &FileMgr) : DepFS(nullptr) {
50-
FileMgr.getVirtualFileSystem().visit([&](llvm::vfs::FileSystem &FS) {
51-
auto *DFS = llvm::dyn_cast<DependencyScanningWorkerFilesystem>(&FS);
52-
if (DFS) {
53-
assert(!DepFS && "Found multiple scanning VFSs");
54-
DepFS = DFS;
55-
}
56-
});
57-
assert(DepFS && "Did not find scanning VFS");
58-
}
59-
60-
std::unique_ptr<DependencyDirectivesGetter>
61-
cloneFor(FileManager &FileMgr) override {
62-
return std::make_unique<ScanningDependencyDirectivesGetter>(FileMgr);
63-
}
64-
65-
std::optional<ArrayRef<dependency_directives_scan::Directive>>
66-
operator()(FileEntryRef File) override {
67-
return DepFS->getDirectiveTokens(File.getName());
68-
}
69-
};
70-
7145
static bool checkHeaderSearchPaths(const HeaderSearchOptions &HSOpts,
7246
const HeaderSearchOptions &ExistingHSOpts,
7347
DiagnosticsEngine *Diags,
@@ -207,6 +181,42 @@ class PrebuiltModuleListener : public ASTReaderListener {
207181
const ArrayRef<StringRef> StableDirs;
208182
};
209183

184+
/// Visit the given prebuilt module and collect all of the modules it
185+
/// transitively imports and contributing input files.
186+
static bool visitPrebuiltModule(StringRef PrebuiltModuleFilename,
187+
CompilerInstance &CI,
188+
PrebuiltModuleFilesT &ModuleFiles,
189+
PrebuiltModulesAttrsMap &PrebuiltModulesASTMap,
190+
DiagnosticsEngine &Diags,
191+
const ArrayRef<StringRef> StableDirs) {
192+
// List of module files to be processed.
193+
llvm::SmallVector<std::string> Worklist;
194+
195+
PrebuiltModuleListener Listener(ModuleFiles, Worklist, PrebuiltModulesASTMap,
196+
CI.getHeaderSearchOpts(), CI.getLangOpts(),
197+
Diags, StableDirs);
198+
199+
Listener.visitModuleFile(PrebuiltModuleFilename,
200+
serialization::MK_ExplicitModule);
201+
if (ASTReader::readASTFileControlBlock(
202+
PrebuiltModuleFilename, CI.getFileManager(), CI.getModuleCache(),
203+
CI.getPCHContainerReader(),
204+
/*FindModuleFileExtensions=*/false, Listener,
205+
/*ValidateDiagnosticOptions=*/false, ASTReader::ARR_OutOfDate))
206+
return true;
207+
208+
while (!Worklist.empty()) {
209+
Listener.visitModuleFile(Worklist.back(), serialization::MK_ExplicitModule);
210+
if (ASTReader::readASTFileControlBlock(
211+
Worklist.pop_back_val(), CI.getFileManager(), CI.getModuleCache(),
212+
CI.getPCHContainerReader(),
213+
/*FindModuleFileExtensions=*/false, Listener,
214+
/*ValidateDiagnosticOptions=*/false))
215+
return true;
216+
}
217+
return false;
218+
}
219+
210220
/// Transform arbitrary file name into an object-like file name.
211221
static std::string makeObjFileName(StringRef FileName) {
212222
SmallString<128> ObjFileName(FileName);
@@ -297,42 +307,31 @@ static void canonicalizeDefines(PreprocessorOptions &PPOpts) {
297307
std::swap(PPOpts.Macros, NewMacros);
298308
}
299309

300-
/// Visit the given prebuilt module and collect all of the modules it
301-
/// transitively imports and contributing input files.
302-
static bool visitPrebuiltModule(StringRef PrebuiltModuleFilename,
303-
CompilerInstance &CI,
304-
PrebuiltModuleFilesT &ModuleFiles,
305-
PrebuiltModulesAttrsMap &PrebuiltModulesASTMap,
306-
DiagnosticsEngine &Diags,
307-
const ArrayRef<StringRef> StableDirs) {
308-
// List of module files to be processed.
309-
llvm::SmallVector<std::string> Worklist;
310-
311-
PrebuiltModuleListener Listener(ModuleFiles, Worklist, PrebuiltModulesASTMap,
312-
CI.getHeaderSearchOpts(), CI.getLangOpts(),
313-
Diags, StableDirs);
310+
class ScanningDependencyDirectivesGetter : public DependencyDirectivesGetter {
311+
DependencyScanningWorkerFilesystem *DepFS;
314312

315-
Listener.visitModuleFile(PrebuiltModuleFilename,
316-
serialization::MK_ExplicitModule);
317-
if (ASTReader::readASTFileControlBlock(
318-
PrebuiltModuleFilename, CI.getFileManager(), CI.getModuleCache(),
319-
CI.getPCHContainerReader(),
320-
/*FindModuleFileExtensions=*/false, Listener,
321-
/*ValidateDiagnosticOptions=*/false, ASTReader::ARR_OutOfDate))
322-
return true;
313+
public:
314+
ScanningDependencyDirectivesGetter(FileManager &FileMgr) : DepFS(nullptr) {
315+
FileMgr.getVirtualFileSystem().visit([&](llvm::vfs::FileSystem &FS) {
316+
auto *DFS = llvm::dyn_cast<DependencyScanningWorkerFilesystem>(&FS);
317+
if (DFS) {
318+
assert(!DepFS && "Found multiple scanning VFSs");
319+
DepFS = DFS;
320+
}
321+
});
322+
assert(DepFS && "Did not find scanning VFS");
323+
}
323324

324-
while (!Worklist.empty()) {
325-
Listener.visitModuleFile(Worklist.back(), serialization::MK_ExplicitModule);
326-
if (ASTReader::readASTFileControlBlock(
327-
Worklist.pop_back_val(), CI.getFileManager(), CI.getModuleCache(),
328-
CI.getPCHContainerReader(),
329-
/*FindModuleFileExtensions=*/false, Listener,
330-
/*ValidateDiagnosticOptions=*/false))
331-
return true;
325+
std::unique_ptr<DependencyDirectivesGetter>
326+
cloneFor(FileManager &FileMgr) override {
327+
return std::make_unique<ScanningDependencyDirectivesGetter>(FileMgr);
332328
}
333-
return false;
334-
}
335329

330+
std::optional<ArrayRef<dependency_directives_scan::Directive>>
331+
operator()(FileEntryRef File) override {
332+
return DepFS->getDirectiveTokens(File.getName());
333+
}
334+
};
336335
} // namespace
337336

338337
/// Sanitize diagnostic options for dependency scan.
@@ -523,4 +522,4 @@ bool DependencyScanningAction::runInvocation(
523522
setLastCC1Arguments(std::move(OriginalInvocation));
524523

525524
return Result;
526-
}
525+
}

clang/lib/Tooling/DependencyScanning/DependencyScanner.h renamed to clang/lib/Tooling/DependencyScanning/DependencyScannerImpl.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,4 +79,4 @@ void sanitizeDiagOpts(DiagnosticOptions &DiagOpts);
7979
} // namespace tooling
8080
} // namespace clang
8181

82-
#endif
82+
#endif

clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
//===----------------------------------------------------------------------===//
88

99
#include "clang/Tooling/DependencyScanning/DependencyScanningWorker.h"
10-
#include "DependencyScanner.h"
10+
#include "DependencyScannerImpl.h"
1111
#include "clang/Basic/DiagnosticDriver.h"
1212
#include "clang/Basic/DiagnosticFrontend.h"
1313
#include "clang/Basic/DiagnosticSerialization.h"

0 commit comments

Comments
 (0)