Skip to content

Commit 671cd5a

Browse files
committed
Always pass DiagnosticOptions to ASTUnit with DiagnosticsEngine (pt. 2)
1 parent 8a25331 commit 671cd5a

File tree

12 files changed

+44
-42
lines changed

12 files changed

+44
-42
lines changed

clang/lib/CrossTU/CrossTranslationUnit.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -560,15 +560,15 @@ CrossTranslationUnitContext::ASTLoader::load(StringRef Identifier) {
560560

561561
CrossTranslationUnitContext::LoadResultTy
562562
CrossTranslationUnitContext::ASTLoader::loadFromDump(StringRef ASTDumpPath) {
563-
DiagnosticOptions DiagOpts;
563+
auto DiagOpts = std::make_shared<DiagnosticOptions>();
564564
TextDiagnosticPrinter *DiagClient =
565-
new TextDiagnosticPrinter(llvm::errs(), DiagOpts);
565+
new TextDiagnosticPrinter(llvm::errs(), *DiagOpts);
566566
IntrusiveRefCntPtr<DiagnosticIDs> DiagID(new DiagnosticIDs());
567567
IntrusiveRefCntPtr<DiagnosticsEngine> Diags(
568-
new DiagnosticsEngine(DiagID, DiagOpts, DiagClient));
568+
new DiagnosticsEngine(DiagID, *DiagOpts, DiagClient));
569569
return ASTUnit::LoadFromASTFile(
570570
ASTDumpPath, CI.getPCHContainerOperations()->getRawReader(),
571-
ASTUnit::LoadEverything, Diags, CI.getFileSystemOpts(),
571+
ASTUnit::LoadEverything, DiagOpts, Diags, CI.getFileSystemOpts(),
572572
CI.getHeaderSearchOpts());
573573
}
574574

clang/lib/Frontend/ASTMerge.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ void ASTMergeAction::ExecuteAction() {
4646
new ForwardingDiagnosticConsumer(*CI.getDiagnostics().getClient()),
4747
/*ShouldOwnClient=*/true));
4848
std::unique_ptr<ASTUnit> Unit = ASTUnit::LoadFromASTFile(
49-
ASTFiles[I], CI.getPCHContainerReader(), ASTUnit::LoadEverything, Diags,
50-
CI.getFileSystemOpts(), CI.getHeaderSearchOpts());
49+
ASTFiles[I], CI.getPCHContainerReader(), ASTUnit::LoadEverything,
50+
nullptr, Diags, CI.getFileSystemOpts(), CI.getHeaderSearchOpts());
5151

5252
if (!Unit)
5353
continue;

clang/lib/Frontend/FrontendAction.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -779,7 +779,7 @@ bool FrontendAction::BeginSourceFile(CompilerInstance &CI,
779779

780780
std::unique_ptr<ASTUnit> AST = ASTUnit::LoadFromASTFile(
781781
InputFile, CI.getPCHContainerReader(), ASTUnit::LoadPreprocessorOnly,
782-
ASTDiags, CI.getFileSystemOpts(), CI.getHeaderSearchOpts());
782+
nullptr, ASTDiags, CI.getFileSystemOpts(), CI.getHeaderSearchOpts());
783783
if (!AST)
784784
return false;
785785

@@ -845,8 +845,9 @@ bool FrontendAction::BeginSourceFile(CompilerInstance &CI,
845845
StringRef InputFile = Input.getFile();
846846

847847
std::unique_ptr<ASTUnit> AST = ASTUnit::LoadFromASTFile(
848-
InputFile, CI.getPCHContainerReader(), ASTUnit::LoadEverything, Diags,
849-
CI.getFileSystemOpts(), CI.getHeaderSearchOpts(), &CI.getLangOpts());
848+
InputFile, CI.getPCHContainerReader(), ASTUnit::LoadEverything, nullptr,
849+
Diags, CI.getFileSystemOpts(), CI.getHeaderSearchOpts(),
850+
&CI.getLangOpts());
850851

851852
if (!AST)
852853
return false;

clang/lib/Interpreter/CodeCompletion.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -359,13 +359,12 @@ void ReplCodeCompleter::codeComplete(CompilerInstance *InterpCI,
359359
unsigned Col,
360360
const CompilerInstance *ParentCI,
361361
std::vector<std::string> &CCResults) {
362-
auto DiagOpts = DiagnosticOptions();
363362
auto consumer = ReplCompletionConsumer(CCResults, *this);
364363

365364
auto diag = InterpCI->getDiagnosticsPtr();
366365
std::unique_ptr<ASTUnit> AU(ASTUnit::LoadFromCompilerInvocationAction(
367366
InterpCI->getInvocationPtr(), std::make_shared<PCHContainerOperations>(),
368-
diag));
367+
nullptr, diag));
369368
llvm::SmallVector<clang::StoredDiagnostic, 8> sd = {};
370369
llvm::SmallVector<const llvm::MemoryBuffer *, 1> tb = {};
371370
InterpCI->getFrontendOpts().Inputs[0] = FrontendInputFile(

clang/lib/Tooling/Tooling.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -652,7 +652,7 @@ class ASTBuilderAction : public ToolAction {
652652
std::shared_ptr<PCHContainerOperations> PCHContainerOps,
653653
DiagnosticConsumer *DiagConsumer) override {
654654
std::unique_ptr<ASTUnit> AST = ASTUnit::LoadFromCompilerInvocation(
655-
Invocation, std::move(PCHContainerOps),
655+
Invocation, std::move(PCHContainerOps), nullptr,
656656
CompilerInstance::createDiagnostics(Files->getVirtualFileSystem(),
657657
Invocation->getDiagnosticOpts(),
658658
DiagConsumer,

clang/tools/c-index-test/core_main.cpp

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -220,10 +220,10 @@ static bool printSourceSymbols(const char *Executable,
220220
SmallVector<const char *, 4> ArgsWithProgName;
221221
ArgsWithProgName.push_back(Executable);
222222
ArgsWithProgName.append(Args.begin(), Args.end());
223-
DiagnosticOptions DiagOpts;
223+
auto DiagOpts = std::make_shared<DiagnosticOptions>();
224224
IntrusiveRefCntPtr<DiagnosticsEngine> Diags(
225225
CompilerInstance::createDiagnostics(*llvm::vfs::getRealFileSystem(),
226-
DiagOpts));
226+
*DiagOpts));
227227
CreateInvocationOptions CIOpts;
228228
CIOpts.Diags = Diags;
229229
CIOpts.ProbePrecompiled = true; // FIXME: historical default. Needed?
@@ -242,7 +242,7 @@ static bool printSourceSymbols(const char *Executable,
242242

243243
auto PCHContainerOps = std::make_shared<PCHContainerOperations>();
244244
std::unique_ptr<ASTUnit> Unit(ASTUnit::LoadFromCompilerInvocationAction(
245-
std::move(CInvok), PCHContainerOps, Diags, IndexAction.get()));
245+
std::move(CInvok), PCHContainerOps, DiagOpts, Diags, IndexAction.get()));
246246

247247
if (!Unit)
248248
return true;
@@ -275,16 +275,16 @@ static bool printSourceSymbolsFromModule(StringRef modulePath,
275275

276276
HeaderSearchOptions HSOpts;
277277

278-
DiagnosticOptions DiagOpts;
278+
auto DiagOpts = std::make_shared<DiagnosticOptions>();
279279
IntrusiveRefCntPtr<DiagnosticsEngine> Diags =
280280
CompilerInstance::createDiagnostics(*llvm::vfs::getRealFileSystem(),
281-
DiagOpts);
282-
std::unique_ptr<ASTUnit> AU =
283-
ASTUnit::LoadFromASTFile(modulePath, *pchRdr, ASTUnit::LoadASTOnly, Diags,
284-
FileSystemOpts, HSOpts, /*LangOpts=*/nullptr,
285-
/*OnlyLocalDecls=*/true, CaptureDiagsKind::None,
286-
/*AllowASTWithCompilerErrors=*/true,
287-
/*UserFilesAreVolatile=*/false);
281+
*DiagOpts);
282+
std::unique_ptr<ASTUnit> AU = ASTUnit::LoadFromASTFile(
283+
modulePath, *pchRdr, ASTUnit::LoadASTOnly, DiagOpts, Diags,
284+
FileSystemOpts, HSOpts, /*LangOpts=*/nullptr,
285+
/*OnlyLocalDecls=*/true, CaptureDiagsKind::None,
286+
/*AllowASTWithCompilerErrors=*/true,
287+
/*UserFilesAreVolatile=*/false);
288288
if (!AU) {
289289
errs() << "failed to create TU for: " << modulePath << '\n';
290290
return true;

clang/tools/clang-extdef-mapping/ClangExtDefMapGen.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -152,13 +152,13 @@ static bool HandleAST(StringRef AstPath) {
152152
if (!CI)
153153
CI = new CompilerInstance();
154154

155-
DiagnosticOptions DiagOpts;
155+
auto DiagOpts = std::make_shared<DiagnosticOptions>();
156156
IntrusiveRefCntPtr<DiagnosticsEngine> DiagEngine =
157-
GetDiagnosticsEngine(DiagOpts);
157+
GetDiagnosticsEngine(*DiagOpts);
158158

159159
std::unique_ptr<ASTUnit> Unit = ASTUnit::LoadFromASTFile(
160160
AstPath, CI->getPCHContainerOperations()->getRawReader(),
161-
ASTUnit::LoadASTOnly, DiagEngine, CI->getFileSystemOpts(),
161+
ASTUnit::LoadASTOnly, DiagOpts, DiagEngine, CI->getFileSystemOpts(),
162162
CI->getHeaderSearchOpts());
163163

164164
if (!Unit)

clang/tools/libclang/CIndex.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4227,13 +4227,13 @@ enum CXErrorCode clang_createTranslationUnit2(CXIndex CIdx,
42274227
FileSystemOptions FileSystemOpts;
42284228
HeaderSearchOptions HSOpts;
42294229

4230-
DiagnosticOptions DiagOpts;
4230+
auto DiagOpts = std::make_shared<DiagnosticOptions>();
42314231
IntrusiveRefCntPtr<DiagnosticsEngine> Diags =
42324232
CompilerInstance::createDiagnostics(*llvm::vfs::getRealFileSystem(),
4233-
DiagOpts);
4233+
*DiagOpts);
42344234
std::unique_ptr<ASTUnit> AU = ASTUnit::LoadFromASTFile(
42354235
ast_filename, CXXIdx->getPCHContainerOperations()->getRawReader(),
4236-
ASTUnit::LoadEverything, Diags, FileSystemOpts, HSOpts,
4236+
ASTUnit::LoadEverything, DiagOpts, Diags, FileSystemOpts, HSOpts,
42374237
/*LangOpts=*/nullptr, CXXIdx->getOnlyLocalDecls(), CaptureDiagsKind::All,
42384238
/*AllowASTWithCompilerErrors=*/true,
42394239
/*UserFilesAreVolatile=*/true);

clang/tools/libclang/Indexing.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -480,10 +480,10 @@ static CXErrorCode clang_indexSourceFile_Impl(
480480
CaptureDiag = new CaptureDiagnosticConsumer();
481481

482482
// Configure the diagnostics.
483-
DiagnosticOptions DiagOpts;
483+
auto DiagOpts = std::make_shared<DiagnosticOptions>();
484484
IntrusiveRefCntPtr<DiagnosticsEngine> Diags(
485485
CompilerInstance::createDiagnostics(*llvm::vfs::getRealFileSystem(),
486-
DiagOpts, CaptureDiag,
486+
*DiagOpts, CaptureDiag,
487487
/*ShouldOwnClient=*/true));
488488

489489
// Recover resources if we crash before exiting this function.
@@ -555,7 +555,7 @@ static CXErrorCode clang_indexSourceFile_Impl(
555555
CInvok->getHeaderSearchOpts().ModuleFormat = std::string(
556556
CXXIdx->getPCHContainerOperations()->getRawReader().getFormats().front());
557557

558-
auto Unit = ASTUnit::create(CInvok, Diags, CaptureDiagnostics,
558+
auto Unit = ASTUnit::create(CInvok, DiagOpts, Diags, CaptureDiagnostics,
559559
/*UserFilesAreVolatile=*/true);
560560
if (!Unit)
561561
return CXError_InvalidArguments;
@@ -618,7 +618,7 @@ static CXErrorCode clang_indexSourceFile_Impl(
618618
!PrecompilePreamble ? 0 : 2 - CreatePreambleOnFirstParse;
619619
DiagnosticErrorTrap DiagTrap(*Diags);
620620
bool Success = ASTUnit::LoadFromCompilerInvocationAction(
621-
std::move(CInvok), CXXIdx->getPCHContainerOperations(), Diags,
621+
std::move(CInvok), CXXIdx->getPCHContainerOperations(), DiagOpts, Diags,
622622
IndexAction.get(), UPtr, Persistent, CXXIdx->getClangResourcesPath(),
623623
OnlyLocalDecls, CaptureDiagnostics, PrecompilePreambleAfterNParses,
624624
CacheCodeCompletionResults, /*UserFilesAreVolatile=*/true);

clang/unittests/Frontend/ASTUnitTest.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,8 @@ class ASTUnitTest : public ::testing::Test {
5959
PCHContainerOps = std::make_shared<PCHContainerOperations>();
6060

6161
return ASTUnit::LoadFromCompilerInvocation(
62-
CInvok, PCHContainerOps, Diags, FileMgr, false, CaptureDiagsKind::None,
63-
0, TU_Complete, false, false, isVolatile);
62+
CInvok, PCHContainerOps, DiagOpts, Diags, FileMgr, false,
63+
CaptureDiagsKind::None, 0, TU_Complete, false, false, isVolatile);
6464
}
6565
};
6666

@@ -97,7 +97,7 @@ TEST_F(ASTUnitTest, SaveLoadPreservesLangOptionsInPrintingPolicy) {
9797

9898
std::unique_ptr<ASTUnit> AU = ASTUnit::LoadFromASTFile(
9999
ASTFileName, PCHContainerOps->getRawReader(), ASTUnit::LoadEverything,
100-
Diags, FileSystemOptions(), HSOpts);
100+
DiagOpts, Diags, FileSystemOptions(), HSOpts);
101101

102102
if (!AU)
103103
FAIL() << "failed to load ASTUnit";
@@ -148,8 +148,8 @@ TEST_F(ASTUnitTest, ModuleTextualHeader) {
148148
PCHContainerOps = std::make_shared<PCHContainerOperations>();
149149

150150
auto AU = ASTUnit::LoadFromCompilerInvocation(
151-
CInvok, PCHContainerOps, Diags, FileMgr, false, CaptureDiagsKind::None, 1,
152-
TU_Complete, false, false, false);
151+
CInvok, PCHContainerOps, DiagOpts, Diags, FileMgr, false,
152+
CaptureDiagsKind::None, 1, TU_Complete, false, false, false);
153153
ASSERT_TRUE(AU);
154154
auto File = AU->getFileManager().getFileRef("Textual.h", false, false);
155155
ASSERT_TRUE(bool(File));

0 commit comments

Comments
 (0)