@@ -438,14 +438,21 @@ bool SwiftASTManager::initCompilerInvocation(CompilerInvocation &Invocation,
438
438
Args.push_back (Impl.RuntimeResourcePath .c_str ());
439
439
Args.append (OrigArgs.begin (), OrigArgs.end ());
440
440
441
+ SmallString<32 > ErrStr;
442
+ llvm::raw_svector_ostream ErrOS (ErrStr);
443
+ StreamDiagConsumer DiagConsumer (ErrOS);
444
+ Diags.addConsumer (DiagConsumer);
445
+
441
446
bool HadError = driver::getSingleFrontendInvocationFromDriverArguments (
442
447
Args, Diags, [&](ArrayRef<const char *> FrontendArgs) {
443
448
return Invocation.parseArgs (FrontendArgs, Diags);
444
449
});
445
450
451
+ // Remove the StreamDiagConsumer as it's no longer needed.
452
+ Diags.removeConsumer (DiagConsumer);
453
+
446
454
if (HadError) {
447
- // FIXME: Get the actual diagnostic.
448
- Error = " error when parsing the compiler arguments" ;
455
+ Error = ErrOS.str ();
449
456
return true ;
450
457
}
451
458
@@ -493,20 +500,9 @@ bool SwiftASTManager::initCompilerInvocation(CompilerInvocation &CompInvok,
493
500
ArrayRef<const char *> OrigArgs,
494
501
StringRef PrimaryFile,
495
502
std::string &Error) {
496
-
497
- SmallString<32 > ErrStr;
498
- llvm::raw_svector_ostream ErrOS (ErrStr);
499
503
DiagnosticEngine Diagnostics (Impl.SourceMgr );
500
- StreamDiagConsumer DiagConsumer (ErrOS);
501
- Diagnostics.addConsumer (DiagConsumer);
502
-
503
- if (initCompilerInvocation (CompInvok, OrigArgs, Diagnostics, PrimaryFile,
504
- Error)) {
505
- if (!ErrOS.str ().empty ())
506
- Error = ErrOS.str ();
507
- return true ;
508
- }
509
- return false ;
504
+ return initCompilerInvocation (CompInvok, OrigArgs, Diagnostics, PrimaryFile,
505
+ Error);
510
506
}
511
507
512
508
bool SwiftASTManager::initCompilerInvocationNoInputs (
0 commit comments