Skip to content

Commit d5fcf8a

Browse files
committed
[clang][deps] NFC: Move dependency consumer into header file
1 parent f4c21ab commit d5fcf8a

File tree

2 files changed

+68
-63
lines changed

2 files changed

+68
-63
lines changed

clang/include/clang/Tooling/DependencyScanning/DependencyScanningTool.h

+39
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,11 @@
1313
#include "clang/Tooling/DependencyScanning/DependencyScanningWorker.h"
1414
#include "clang/Tooling/DependencyScanning/ModuleDepCollector.h"
1515
#include "clang/Tooling/JSONCompilationDatabase.h"
16+
#include "llvm/ADT/MapVector.h"
1617
#include "llvm/ADT/StringSet.h"
18+
#include "llvm/ADT/StringMap.h"
1719
#include <string>
20+
#include <vector>
1821

1922
namespace clang {
2023
namespace tooling {
@@ -101,6 +104,42 @@ class DependencyScanningTool {
101104
DependencyScanningWorker Worker;
102105
};
103106

107+
class FullDependencyConsumer : public DependencyConsumer {
108+
public:
109+
FullDependencyConsumer(const llvm::StringSet<> &AlreadySeen)
110+
: AlreadySeen(AlreadySeen) {}
111+
112+
void handleDependencyOutputOpts(const DependencyOutputOptions &) override {}
113+
114+
void handleFileDependency(StringRef File) override {
115+
Dependencies.push_back(std::string(File));
116+
}
117+
118+
void handlePrebuiltModuleDependency(PrebuiltModuleDep PMD) override {
119+
PrebuiltModuleDeps.emplace_back(std::move(PMD));
120+
}
121+
122+
void handleModuleDependency(ModuleDeps MD) override {
123+
ClangModuleDeps[MD.ID.ContextHash + MD.ID.ModuleName] = std::move(MD);
124+
}
125+
126+
void handleContextHash(std::string Hash) override {
127+
ContextHash = std::move(Hash);
128+
}
129+
130+
FullDependenciesResult getFullDependencies(
131+
const std::vector<std::string> &OriginalCommandLine) const;
132+
133+
private:
134+
std::vector<std::string> Dependencies;
135+
std::vector<PrebuiltModuleDep> PrebuiltModuleDeps;
136+
llvm::MapVector<std::string, ModuleDeps, llvm::StringMap<unsigned>>
137+
ClangModuleDeps;
138+
std::string ContextHash;
139+
std::vector<std::string> OutputPaths;
140+
const llvm::StringSet<> &AlreadySeen;
141+
};
142+
104143
} // end namespace dependencies
105144
} // end namespace tooling
106145
} // end namespace clang

clang/lib/Tooling/DependencyScanning/DependencyScanningTool.cpp

+29-63
Original file line numberDiff line numberDiff line change
@@ -114,76 +114,42 @@ DependencyScanningTool::getFullDependencies(
114114
const std::vector<std::string> &CommandLine, StringRef CWD,
115115
const llvm::StringSet<> &AlreadySeen,
116116
llvm::Optional<StringRef> ModuleName) {
117-
class FullDependencyPrinterConsumer : public DependencyConsumer {
118-
public:
119-
FullDependencyPrinterConsumer(const llvm::StringSet<> &AlreadySeen)
120-
: AlreadySeen(AlreadySeen) {}
121-
122-
void
123-
handleDependencyOutputOpts(const DependencyOutputOptions &Opts) override {}
124-
125-
void handleFileDependency(StringRef File) override {
126-
Dependencies.push_back(std::string(File));
127-
}
128-
129-
void handlePrebuiltModuleDependency(PrebuiltModuleDep PMD) override {
130-
PrebuiltModuleDeps.emplace_back(std::move(PMD));
131-
}
132-
133-
void handleModuleDependency(ModuleDeps MD) override {
134-
ClangModuleDeps[MD.ID.ContextHash + MD.ID.ModuleName] = std::move(MD);
135-
}
136-
137-
void handleContextHash(std::string Hash) override {
138-
ContextHash = std::move(Hash);
139-
}
140-
141-
FullDependenciesResult getFullDependencies(
142-
const std::vector<std::string> &OriginalCommandLine) const {
143-
FullDependencies FD;
144-
145-
FD.OriginalCommandLine =
146-
ArrayRef<std::string>(OriginalCommandLine).slice(1);
117+
FullDependencyConsumer Consumer(AlreadySeen);
118+
llvm::Error Result =
119+
Worker.computeDependencies(CWD, CommandLine, Consumer, ModuleName);
120+
if (Result)
121+
return std::move(Result);
122+
return Consumer.getFullDependencies(CommandLine);
123+
}
147124

148-
FD.ID.ContextHash = std::move(ContextHash);
125+
FullDependenciesResult FullDependencyConsumer::getFullDependencies(
126+
const std::vector<std::string> &OriginalCommandLine) const {
127+
FullDependencies FD;
149128

150-
FD.FileDeps.assign(Dependencies.begin(), Dependencies.end());
129+
FD.OriginalCommandLine = ArrayRef<std::string>(OriginalCommandLine).slice(1);
151130

152-
for (auto &&M : ClangModuleDeps) {
153-
auto &MD = M.second;
154-
if (MD.ImportedByMainFile)
155-
FD.ClangModuleDeps.push_back(MD.ID);
156-
}
131+
FD.ID.ContextHash = std::move(ContextHash);
157132

158-
FD.PrebuiltModuleDeps = std::move(PrebuiltModuleDeps);
133+
FD.FileDeps.assign(Dependencies.begin(), Dependencies.end());
159134

160-
FullDependenciesResult FDR;
135+
for (auto &&M : ClangModuleDeps) {
136+
auto &MD = M.second;
137+
if (MD.ImportedByMainFile)
138+
FD.ClangModuleDeps.push_back(MD.ID);
139+
}
161140

162-
for (auto &&M : ClangModuleDeps) {
163-
// TODO: Avoid handleModuleDependency even being called for modules
164-
// we've already seen.
165-
if (AlreadySeen.count(M.first))
166-
continue;
167-
FDR.DiscoveredModules.push_back(std::move(M.second));
168-
}
141+
FD.PrebuiltModuleDeps = std::move(PrebuiltModuleDeps);
169142

170-
FDR.FullDeps = std::move(FD);
171-
return FDR;
172-
}
143+
FullDependenciesResult FDR;
173144

174-
private:
175-
std::vector<std::string> Dependencies;
176-
std::vector<PrebuiltModuleDep> PrebuiltModuleDeps;
177-
llvm::MapVector<std::string, ModuleDeps, llvm::StringMap<unsigned>> ClangModuleDeps;
178-
std::string ContextHash;
179-
std::vector<std::string> OutputPaths;
180-
const llvm::StringSet<> &AlreadySeen;
181-
};
145+
for (auto &&M : ClangModuleDeps) {
146+
// TODO: Avoid handleModuleDependency even being called for modules
147+
// we've already seen.
148+
if (AlreadySeen.count(M.first))
149+
continue;
150+
FDR.DiscoveredModules.push_back(std::move(M.second));
151+
}
182152

183-
FullDependencyPrinterConsumer Consumer(AlreadySeen);
184-
llvm::Error Result =
185-
Worker.computeDependencies(CWD, CommandLine, Consumer, ModuleName);
186-
if (Result)
187-
return std::move(Result);
188-
return Consumer.getFullDependencies(CommandLine);
153+
FDR.FullDeps = std::move(FD);
154+
return FDR;
189155
}

0 commit comments

Comments
 (0)