@@ -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