@@ -174,18 +174,19 @@ void clang_experimental_DependencyScannerWorker_dispose_v0(
174
174
delete unwrap (Worker);
175
175
}
176
176
177
- using HandleFullDepsCallback = llvm::function_ref<void (FullDependencies)>;
178
-
179
- static CXErrorCode getFullDependencies (
180
- DependencyScanningWorker *Worker, ArrayRef<std::string> Compilation,
181
- const char *WorkingDirectory, CXModuleDiscoveredCallback *MDC,
182
- void *Context, CXString *Error, DiagnosticConsumer *DiagConsumer,
183
- LookupModuleOutputCallback LookupOutput, bool DeprecatedDriverCommand,
184
- llvm::Optional<StringRef> ModuleName,
185
- HandleFullDepsCallback HandleFullDeps) {
177
+ using HandleTUDepsCallback = llvm::function_ref<void (TranslationUnitDeps)>;
178
+
179
+ static CXErrorCode getFullDependencies (DependencyScanningWorker *Worker,
180
+ ArrayRef<std::string> Compilation,
181
+ const char *WorkingDirectory,
182
+ CXModuleDiscoveredCallback *MDC,
183
+ void *Context, CXString *Error,
184
+ DiagnosticConsumer *DiagConsumer,
185
+ LookupModuleOutputCallback LookupOutput,
186
+ llvm::Optional<StringRef> ModuleName,
187
+ HandleTUDepsCallback HandleTUDeps) {
186
188
llvm::StringSet<> AlreadySeen;
187
189
FullDependencyConsumer DepConsumer (AlreadySeen, LookupOutput,
188
- Worker->shouldEagerLoadModules (),
189
190
Worker->getCASFS ());
190
191
191
192
bool HasDiagConsumer = DiagConsumer;
@@ -206,19 +207,15 @@ static CXErrorCode getFullDependencies(
206
207
}
207
208
}
208
209
209
- FullDependenciesResult FDR;
210
- if (DeprecatedDriverCommand)
211
- FDR = DepConsumer.getFullDependenciesLegacyDriverCommand (Compilation);
212
- else
213
- FDR = DepConsumer.takeFullDependencies ();
210
+ TranslationUnitDeps TU = DepConsumer.takeTranslationUnitDeps ();
214
211
215
- if (!FDR. DiscoveredModules .empty ()) {
212
+ if (!TU. ModuleGraph .empty ()) {
216
213
CXModuleDependencySet *MDS = new CXModuleDependencySet;
217
- MDS->Count = FDR. DiscoveredModules .size ();
214
+ MDS->Count = TU. ModuleGraph .size ();
218
215
MDS->Modules = new CXModuleDependency[MDS->Count ];
219
216
for (int I = 0 ; I < MDS->Count ; ++I) {
220
217
CXModuleDependency &M = MDS->Modules [I];
221
- const ModuleDeps &MD = FDR. DiscoveredModules [I];
218
+ const ModuleDeps &MD = TU. ModuleGraph [I];
222
219
M.Name = cxstring::createDup (MD.ID .ModuleName );
223
220
M.ContextHash = cxstring::createDup (MD.ID .ContextHash );
224
221
M.ModuleMapPath = cxstring::createDup (MD.ClangModuleMapFile );
@@ -232,17 +229,19 @@ static CXErrorCode getFullDependencies(
232
229
MDC (Context, MDS);
233
230
}
234
231
235
- HandleFullDeps (std::move (FDR. FullDeps ));
232
+ HandleTUDeps (std::move (TU ));
236
233
return CXError_Success;
237
234
}
238
235
239
- static CXErrorCode getFileDependencies (
240
- CXDependencyScannerWorker W, int argc, const char *const *argv,
241
- const char *WorkingDirectory, CXModuleDiscoveredCallback *MDC,
242
- void *Context, CXString *Error, DiagnosticConsumer *DiagConsumer,
243
- LookupModuleOutputCallback LookupOutput, bool DeprecatedDriverCommand,
244
- llvm::Optional<StringRef> ModuleName,
245
- HandleFullDepsCallback HandleFullDeps) {
236
+ static CXErrorCode getFileDependencies (CXDependencyScannerWorker W, int argc,
237
+ const char *const *argv,
238
+ const char *WorkingDirectory,
239
+ CXModuleDiscoveredCallback *MDC,
240
+ void *Context, CXString *Error,
241
+ DiagnosticConsumer *DiagConsumer,
242
+ LookupModuleOutputCallback LookupOutput,
243
+ llvm::Optional<StringRef> ModuleName,
244
+ HandleTUDepsCallback HandleTUDeps) {
246
245
if (!W || argc < 2 || !argv)
247
246
return CXError_InvalidArguments;
248
247
@@ -253,9 +252,9 @@ static CXErrorCode getFileDependencies(
253
252
254
253
std::vector<std::string> Compilation{argv, argv + argc};
255
254
256
- return getFullDependencies (
257
- Worker, Compilation, WorkingDirectory, MDC, Context, Error, DiagConsumer,
258
- LookupOutput, DeprecatedDriverCommand, ModuleName, HandleFullDeps );
255
+ return getFullDependencies (Worker, Compilation, WorkingDirectory, MDC,
256
+ Context, Error, DiagConsumer, LookupOutput ,
257
+ ModuleName, HandleTUDeps );
259
258
}
260
259
261
260
namespace {
@@ -272,38 +271,6 @@ class OutputLookup {
272
271
};
273
272
} // end anonymous namespace
274
273
275
- CXFileDependencies *
276
- clang_experimental_DependencyScannerWorker_getFileDependencies_v3 (
277
- CXDependencyScannerWorker W, int argc, const char *const *argv,
278
- const char *ModuleName, const char *WorkingDirectory, void *MDCContext,
279
- CXModuleDiscoveredCallback *MDC, void *MLOContext,
280
- CXModuleLookupOutputCallback *MLO, unsigned , CXString *Error) {
281
- OutputLookup OL (MLOContext, MLO);
282
- auto LookupOutputs = [&](const ModuleID &ID, ModuleOutputKind MOK) {
283
- return OL.lookupModuleOutput (ID, MOK);
284
- };
285
- CXFileDependencies *FDeps = nullptr ;
286
- CXErrorCode Result = getFileDependencies (
287
- W, argc, argv, WorkingDirectory, MDC, MDCContext, Error, nullptr ,
288
- LookupOutputs,
289
- /* DeprecatedDriverCommand=*/ true ,
290
- ModuleName ? Optional<StringRef>(ModuleName) : None,
291
- [&](FullDependencies FD) {
292
- assert (!FD.DriverCommandLine .empty ());
293
- std::vector<std::string> Modules;
294
- for (const ModuleID &MID : FD.ClangModuleDeps )
295
- Modules.push_back (MID.ModuleName + " :" + MID.ContextHash );
296
- FDeps = new CXFileDependencies;
297
- FDeps->ContextHash = cxstring::createDup (FD.ID .ContextHash );
298
- FDeps->FileDeps = cxstring::createSet (FD.FileDeps );
299
- FDeps->ModuleDeps = cxstring::createSet (Modules);
300
- FDeps->BuildArguments = cxstring::createSet (FD.DriverCommandLine );
301
- });
302
- assert (Result != CXError_Success || FDeps);
303
- (void )Result;
304
- return FDeps;
305
- }
306
-
307
274
CXErrorCode clang_experimental_DependencyScannerWorker_getFileDependencies_v4 (
308
275
CXDependencyScannerWorker W, int argc, const char *const *argv,
309
276
const char *ModuleName, const char *WorkingDirectory, void *MDCContext,
@@ -321,25 +288,23 @@ CXErrorCode clang_experimental_DependencyScannerWorker_getFileDependencies_v4(
321
288
322
289
CXErrorCode Result = getFileDependencies (
323
290
W, argc, argv, WorkingDirectory, MDC, MDCContext, Error, nullptr ,
324
- LookupOutputs,
325
- /* DeprecatedDriverCommand=*/ false ,
326
- ModuleName ? Optional<StringRef>(ModuleName) : None,
327
- [&](FullDependencies FD) {
328
- assert (FD.DriverCommandLine .empty ());
291
+ LookupOutputs, ModuleName ? Optional<StringRef>(ModuleName) : None,
292
+ [&](TranslationUnitDeps TU) {
293
+ assert (TU.DriverCommandLine .empty ());
329
294
std::vector<std::string> Modules;
330
- for (const ModuleID &MID : FD .ClangModuleDeps )
295
+ for (const ModuleID &MID : TU .ClangModuleDeps )
331
296
Modules.push_back (MID.ModuleName + " :" + MID.ContextHash );
332
- auto *Commands = new CXTranslationUnitCommand[FD .Commands .size ()];
333
- for (size_t I = 0 , E = FD .Commands .size (); I < E; ++I) {
334
- Commands[I].ContextHash = cxstring::createDup (FD .ID .ContextHash );
335
- Commands[I].FileDeps = cxstring::createSet (FD .FileDeps );
297
+ auto *Commands = new CXTranslationUnitCommand[TU .Commands .size ()];
298
+ for (size_t I = 0 , E = TU .Commands .size (); I < E; ++I) {
299
+ Commands[I].ContextHash = cxstring::createDup (TU .ID .ContextHash );
300
+ Commands[I].FileDeps = cxstring::createSet (TU .FileDeps );
336
301
Commands[I].ModuleDeps = cxstring::createSet (Modules);
337
302
Commands[I].Executable =
338
- cxstring::createDup (FD .Commands [I].Executable );
303
+ cxstring::createDup (TU .Commands [I].Executable );
339
304
Commands[I].BuildArguments =
340
- cxstring::createSet (FD .Commands [I].Arguments );
305
+ cxstring::createSet (TU .Commands [I].Arguments );
341
306
}
342
- *Out = new CXFileDependenciesList{FD .Commands .size (), Commands};
307
+ *Out = new CXFileDependenciesList{TU .Commands .size (), Commands};
343
308
});
344
309
345
310
return Result;
@@ -364,25 +329,23 @@ CXErrorCode clang_experimental_DependencyScannerWorker_getFileDependencies_v5(
364
329
365
330
CXErrorCode Result = getFileDependencies (
366
331
W, argc, argv, WorkingDirectory, MDC, MDCContext, nullptr , &DiagConsumer,
367
- LookupOutputs,
368
- /* DeprecatedDriverCommand=*/ false ,
369
- ModuleName ? Optional<StringRef>(ModuleName) : None,
370
- [&](FullDependencies FD) {
371
- assert (FD.DriverCommandLine .empty ());
332
+ LookupOutputs, ModuleName ? Optional<StringRef>(ModuleName) : None,
333
+ [&](TranslationUnitDeps TU) {
334
+ assert (TU.DriverCommandLine .empty ());
372
335
std::vector<std::string> Modules;
373
- for (const ModuleID &MID : FD .ClangModuleDeps )
336
+ for (const ModuleID &MID : TU .ClangModuleDeps )
374
337
Modules.push_back (MID.ModuleName + " :" + MID.ContextHash );
375
- auto *Commands = new CXTranslationUnitCommand[FD .Commands .size ()];
376
- for (size_t I = 0 , E = FD .Commands .size (); I < E; ++I) {
377
- Commands[I].ContextHash = cxstring::createDup (FD .ID .ContextHash );
378
- Commands[I].FileDeps = cxstring::createSet (FD .FileDeps );
338
+ auto *Commands = new CXTranslationUnitCommand[TU .Commands .size ()];
339
+ for (size_t I = 0 , E = TU .Commands .size (); I < E; ++I) {
340
+ Commands[I].ContextHash = cxstring::createDup (TU .ID .ContextHash );
341
+ Commands[I].FileDeps = cxstring::createSet (TU .FileDeps );
379
342
Commands[I].ModuleDeps = cxstring::createSet (Modules);
380
343
Commands[I].Executable =
381
- cxstring::createDup (FD .Commands [I].Executable );
344
+ cxstring::createDup (TU .Commands [I].Executable );
382
345
Commands[I].BuildArguments =
383
- cxstring::createSet (FD .Commands [I].Arguments );
346
+ cxstring::createSet (TU .Commands [I].Arguments );
384
347
}
385
- *Out = new CXFileDependenciesList{FD .Commands .size (), Commands};
348
+ *Out = new CXFileDependenciesList{TU .Commands .size (), Commands};
386
349
});
387
350
388
351
*OutDiags = DiagConsumer.getDiagnosticSet ();
0 commit comments