Skip to content

Commit e2a8855

Browse files
Revert "[clang] Remove intrusive reference count from DiagnosticOptions (#139584)"
This reverts commit 9e306ad. Multiple builtbot failures have been reported: #139584
1 parent e23a692 commit e2a8855

File tree

135 files changed

+568
-603
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

135 files changed

+568
-603
lines changed

clang-tools-extra/clang-apply-replacements/tool/ClangApplyReplacementsMain.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,9 +96,9 @@ int main(int argc, char **argv) {
9696
cl::SetVersionPrinter(printVersion);
9797
cl::ParseCommandLineOptions(argc, argv);
9898

99-
DiagnosticOptions DiagOpts;
99+
IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts(new DiagnosticOptions());
100100
DiagnosticsEngine Diagnostics(
101-
IntrusiveRefCntPtr<DiagnosticIDs>(new DiagnosticIDs()), DiagOpts);
101+
IntrusiveRefCntPtr<DiagnosticIDs>(new DiagnosticIDs()), DiagOpts.get());
102102

103103
// Determine a formatting style from options.
104104
auto FormatStyleOrError = format::getStyle(FormatStyleOpt, FormatStyleConfig,

clang-tools-extra/clang-change-namespace/tool/ClangChangeNamespace.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -126,10 +126,10 @@ int main(int argc, const char **argv) {
126126
if (int Result = Tool.run(Factory.get()))
127127
return Result;
128128
LangOptions DefaultLangOptions;
129-
DiagnosticOptions DiagOpts;
130-
clang::TextDiagnosticPrinter DiagnosticPrinter(errs(), DiagOpts);
129+
IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts = new DiagnosticOptions();
130+
clang::TextDiagnosticPrinter DiagnosticPrinter(errs(), &*DiagOpts);
131131
DiagnosticsEngine Diagnostics(
132-
IntrusiveRefCntPtr<DiagnosticIDs>(new DiagnosticIDs()), DiagOpts,
132+
IntrusiveRefCntPtr<DiagnosticIDs>(new DiagnosticIDs()), &*DiagOpts,
133133
&DiagnosticPrinter, false);
134134
auto &FileMgr = Tool.getFiles();
135135
SourceManager Sources(Diagnostics, FileMgr);

clang-tools-extra/clang-include-fixer/tool/ClangIncludeFixer.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -455,9 +455,9 @@ int includeFixerMain(int argc, const char **argv) {
455455
}
456456

457457
// Set up a new source manager for applying the resulting replacements.
458-
DiagnosticOptions DiagOpts;
459-
DiagnosticsEngine Diagnostics(new DiagnosticIDs, DiagOpts);
460-
TextDiagnosticPrinter DiagnosticPrinter(outs(), DiagOpts);
458+
IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts(new DiagnosticOptions);
459+
DiagnosticsEngine Diagnostics(new DiagnosticIDs, &*DiagOpts);
460+
TextDiagnosticPrinter DiagnosticPrinter(outs(), &*DiagOpts);
461461
SourceManager SM(Diagnostics, tool.getFiles());
462462
Diagnostics.setClient(&DiagnosticPrinter, false);
463463

clang-tools-extra/clang-move/tool/ClangMove.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -176,10 +176,10 @@ int main(int argc, const char **argv) {
176176
}
177177
}
178178

179-
DiagnosticOptions DiagOpts;
180-
clang::TextDiagnosticPrinter DiagnosticPrinter(errs(), DiagOpts);
179+
IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts(new DiagnosticOptions());
180+
clang::TextDiagnosticPrinter DiagnosticPrinter(errs(), &*DiagOpts);
181181
DiagnosticsEngine Diagnostics(
182-
IntrusiveRefCntPtr<DiagnosticIDs>(new DiagnosticIDs()), DiagOpts,
182+
IntrusiveRefCntPtr<DiagnosticIDs>(new DiagnosticIDs()), &*DiagOpts,
183183
&DiagnosticPrinter, false);
184184
auto &FileMgr = Tool.getFiles();
185185
SourceManager SM(Diagnostics, FileMgr);

clang-tools-extra/clang-query/Query.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ bool MatchQuery::run(llvm::raw_ostream &OS, QuerySession &QS) const {
172172
clang::SourceRange R = BI->second.getSourceRange();
173173
if (R.isValid()) {
174174
TextDiagnostic TD(OS, AST->getASTContext().getLangOpts(),
175-
AST->getDiagnostics().getDiagnosticOptions());
175+
&AST->getDiagnostics().getDiagnosticOptions());
176176
TD.emitDiagnostic(
177177
FullSourceLoc(R.getBegin(), AST->getSourceManager()),
178178
DiagnosticsEngine::Note, "\"" + BI->first + "\" binds here",

clang-tools-extra/clang-reorder-fields/tool/ClangReorderFields.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,10 @@ int main(int argc, const char **argv) {
7272

7373
int ExitCode = Tool.run(Factory.get());
7474
LangOptions DefaultLangOptions;
75-
DiagnosticOptions DiagOpts;
76-
TextDiagnosticPrinter DiagnosticPrinter(errs(), DiagOpts);
75+
IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts(new DiagnosticOptions());
76+
TextDiagnosticPrinter DiagnosticPrinter(errs(), &*DiagOpts);
7777
DiagnosticsEngine Diagnostics(
78-
IntrusiveRefCntPtr<DiagnosticIDs>(new DiagnosticIDs()), DiagOpts,
78+
IntrusiveRefCntPtr<DiagnosticIDs>(new DiagnosticIDs()), &*DiagOpts,
7979
&DiagnosticPrinter, false);
8080

8181
auto &FileMgr = Tool.getFiles();

clang-tools-extra/clang-tidy/ClangTidy.cpp

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -97,14 +97,15 @@ class ErrorReporter {
9797
ErrorReporter(ClangTidyContext &Context, FixBehaviour ApplyFixes,
9898
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> BaseFS)
9999
: Files(FileSystemOptions(), std::move(BaseFS)),
100-
DiagPrinter(new TextDiagnosticPrinter(llvm::outs(), DiagOpts)),
101-
Diags(IntrusiveRefCntPtr<DiagnosticIDs>(new DiagnosticIDs), DiagOpts,
100+
DiagOpts(new DiagnosticOptions()),
101+
DiagPrinter(new TextDiagnosticPrinter(llvm::outs(), &*DiagOpts)),
102+
Diags(IntrusiveRefCntPtr<DiagnosticIDs>(new DiagnosticIDs), &*DiagOpts,
102103
DiagPrinter),
103104
SourceMgr(Diags, Files), Context(Context), ApplyFixes(ApplyFixes) {
104-
DiagOpts.ShowColors = Context.getOptions().UseColor.value_or(
105+
DiagOpts->ShowColors = Context.getOptions().UseColor.value_or(
105106
llvm::sys::Process::StandardOutHasColors());
106107
DiagPrinter->BeginSourceFile(LangOpts);
107-
if (DiagOpts.ShowColors && !llvm::sys::Process::StandardOutIsDisplayed()) {
108+
if (DiagOpts->ShowColors && !llvm::sys::Process::StandardOutIsDisplayed()) {
108109
llvm::sys::Process::UseANSIEscapeCodes(true);
109110
}
110111
}
@@ -307,7 +308,7 @@ class ErrorReporter {
307308

308309
FileManager Files;
309310
LangOptions LangOpts; // FIXME: use langopts from each original file
310-
DiagnosticOptions DiagOpts;
311+
IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts;
311312
DiagnosticConsumer *DiagPrinter;
312313
DiagnosticsEngine Diags;
313314
SourceManager SourceMgr;
@@ -515,10 +516,10 @@ getCheckOptions(const ClangTidyOptions &Options,
515516
Options),
516517
AllowEnablingAnalyzerAlphaCheckers);
517518
ClangTidyDiagnosticConsumer DiagConsumer(Context);
518-
auto DiagOpts = std::make_unique<DiagnosticOptions>();
519-
DiagnosticsEngine DE(llvm::makeIntrusiveRefCnt<DiagnosticIDs>(), *DiagOpts,
519+
DiagnosticsEngine DE(llvm::makeIntrusiveRefCnt<DiagnosticIDs>(),
520+
llvm::makeIntrusiveRefCnt<DiagnosticOptions>(),
520521
&DiagConsumer, /*ShouldOwnClient=*/false);
521-
Context.setDiagnosticsEngine(std::move(DiagOpts), &DE);
522+
Context.setDiagnosticsEngine(&DE);
522523
ClangTidyASTConsumerFactory Factory(Context);
523524
return Factory.getCheckOptions();
524525
}
@@ -557,10 +558,9 @@ runClangTidy(clang::tidy::ClangTidyContext &Context,
557558
Context.setProfileStoragePrefix(StoreCheckProfile);
558559

559560
ClangTidyDiagnosticConsumer DiagConsumer(Context, nullptr, true, ApplyAnyFix);
560-
auto DiagOpts = std::make_unique<DiagnosticOptions>();
561-
DiagnosticsEngine DE(new DiagnosticIDs(), *DiagOpts, &DiagConsumer,
562-
/*ShouldOwnClient=*/false);
563-
Context.setDiagnosticsEngine(std::move(DiagOpts), &DE);
561+
DiagnosticsEngine DE(new DiagnosticIDs(), new DiagnosticOptions(),
562+
&DiagConsumer, /*ShouldOwnClient=*/false);
563+
Context.setDiagnosticsEngine(&DE);
564564
Tool.setDiagnosticConsumer(&DiagConsumer);
565565

566566
class ActionFactory : public FrontendActionFactory {

clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ namespace {
4949
class ClangTidyDiagnosticRenderer : public DiagnosticRenderer {
5050
public:
5151
ClangTidyDiagnosticRenderer(const LangOptions &LangOpts,
52-
DiagnosticOptions &DiagOpts,
52+
DiagnosticOptions *DiagOpts,
5353
ClangTidyError &Error)
5454
: DiagnosticRenderer(LangOpts, DiagOpts), Error(Error) {}
5555

@@ -429,7 +429,7 @@ void ClangTidyDiagnosticConsumer::HandleDiagnostic(
429429
forwardDiagnostic(Info);
430430
} else {
431431
ClangTidyDiagnosticRenderer Converter(
432-
Context.getLangOpts(), Context.DiagEngine->getDiagnosticOptions(),
432+
Context.getLangOpts(), &Context.DiagEngine->getDiagnosticOptions(),
433433
Errors.back());
434434
SmallString<100> Message;
435435
Info.FormatDiagnostic(Message);

clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.h

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,7 @@ class ClangTidyContext {
7575
/// Sets the DiagnosticsEngine that diag() will emit diagnostics to.
7676
// FIXME: this is required initialization, and should be a constructor param.
7777
// Fix the context -> diag engine -> consumer -> context initialization cycle.
78-
void setDiagnosticsEngine(std::unique_ptr<DiagnosticOptions> DiagOpts,
79-
DiagnosticsEngine *DiagEngine) {
80-
this->DiagOpts = std::move(DiagOpts);
78+
void setDiagnosticsEngine(DiagnosticsEngine *DiagEngine) {
8179
this->DiagEngine = DiagEngine;
8280
}
8381

@@ -233,7 +231,6 @@ class ClangTidyContext {
233231
// Writes to Stats.
234232
friend class ClangTidyDiagnosticConsumer;
235233

236-
std::unique_ptr<DiagnosticOptions> DiagOpts = nullptr;
237234
DiagnosticsEngine *DiagEngine = nullptr;
238235
std::unique_ptr<ClangTidyOptionsProvider> OptionsProvider;
239236

clang-tools-extra/clang-tidy/ExpandModularHeadersPPCallbacks.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ ExpandModularHeadersPPCallbacks::ExpandModularHeadersPPCallbacks(
7171
InMemoryFs(new llvm::vfs::InMemoryFileSystem),
7272
Sources(Compiler.getSourceManager()),
7373
// Forward the new diagnostics to the original DiagnosticConsumer.
74-
Diags(new DiagnosticIDs, DiagOpts,
74+
Diags(new DiagnosticIDs, new DiagnosticOptions,
7575
new ForwardingDiagnosticConsumer(Compiler.getDiagnosticClient())),
7676
LangOpts(Compiler.getLangOpts()), HSOpts(Compiler.getHeaderSearchOpts()) {
7777
// Add a FileSystem containing the extra files needed in place of modular

clang-tools-extra/clang-tidy/ExpandModularHeadersPPCallbacks.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,6 @@ class ExpandModularHeadersPPCallbacks : public PPCallbacks {
128128
llvm::IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem> InMemoryFs;
129129

130130
SourceManager &Sources;
131-
DiagnosticOptions DiagOpts;
132131
DiagnosticsEngine Diags;
133132
LangOptions LangOpts;
134133
HeaderSearchOptions HSOpts;

clang-tools-extra/clangd/Compiler.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -110,9 +110,8 @@ buildCompilerInvocation(const ParseInputs &Inputs, clang::DiagnosticConsumer &D,
110110
CIOpts.VFS = Inputs.TFS->view(Inputs.CompileCommand.Directory);
111111
CIOpts.CC1Args = CC1Args;
112112
CIOpts.RecoverOnError = true;
113-
DiagnosticOptions DiagOpts;
114-
CIOpts.Diags =
115-
CompilerInstance::createDiagnostics(*CIOpts.VFS, DiagOpts, &D, false);
113+
CIOpts.Diags = CompilerInstance::createDiagnostics(
114+
*CIOpts.VFS, new DiagnosticOptions, &D, false);
116115
CIOpts.ProbePrecompiled = false;
117116
std::unique_ptr<CompilerInvocation> CI = createInvocation(ArgStrs, CIOpts);
118117
if (!CI)

clang-tools-extra/clangd/ModulesBuilder.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -187,9 +187,9 @@ bool IsModuleFileUpToDate(PathRef ModuleFilePath,
187187
HSOpts.ValidateASTInputFilesContent = true;
188188

189189
clang::clangd::IgnoreDiagnostics IgnoreDiags;
190-
DiagnosticOptions DiagOpts;
191190
IntrusiveRefCntPtr<DiagnosticsEngine> Diags =
192-
CompilerInstance::createDiagnostics(*VFS, DiagOpts, &IgnoreDiags,
191+
CompilerInstance::createDiagnostics(*VFS, new DiagnosticOptions,
192+
&IgnoreDiags,
193193
/*ShouldOwnClient=*/false);
194194

195195
LangOptions LangOpts;

clang-tools-extra/clangd/ParsedAST.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -556,8 +556,7 @@ ParsedAST::build(llvm::StringRef Filename, const ParseInputs &Inputs,
556556
*AllCTFactories, Cfg.Diagnostics.ClangTidy.FastCheckFilter);
557557
CTContext.emplace(std::make_unique<tidy::DefaultOptionsProvider>(
558558
tidy::ClangTidyGlobalOptions(), ClangTidyOpts));
559-
// The lifetime of DiagnosticOptions is managed by \c Clang.
560-
CTContext->setDiagnosticsEngine(nullptr, &Clang->getDiagnostics());
559+
CTContext->setDiagnosticsEngine(&Clang->getDiagnostics());
561560
CTContext->setASTContext(&Clang->getASTContext());
562561
CTContext->setCurrentFile(Filename);
563562
CTContext->setSelfContainedDiags(true);

clang-tools-extra/clangd/Preamble.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -615,7 +615,7 @@ buildPreamble(PathRef FileName, CompilerInvocation CI,
615615
});
616616
auto VFS = Inputs.TFS->view(Inputs.CompileCommand.Directory);
617617
llvm::IntrusiveRefCntPtr<DiagnosticsEngine> PreambleDiagsEngine =
618-
CompilerInstance::createDiagnostics(*VFS, CI.getDiagnosticOpts(),
618+
CompilerInstance::createDiagnostics(*VFS, &CI.getDiagnosticOpts(),
619619
&PreambleDiagnostics,
620620
/*ShouldOwnClient=*/false);
621621
const Config &Cfg = Config::current();

clang-tools-extra/clangd/SystemIncludeExtractor.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -253,8 +253,7 @@ namespace {
253253
bool isValidTarget(llvm::StringRef Triple) {
254254
std::shared_ptr<TargetOptions> TargetOpts(new TargetOptions);
255255
TargetOpts->Triple = Triple.str();
256-
DiagnosticOptions DiagOpts;
257-
DiagnosticsEngine Diags(new DiagnosticIDs, DiagOpts,
256+
DiagnosticsEngine Diags(new DiagnosticIDs, new DiagnosticOptions,
258257
new IgnoringDiagConsumer);
259258
llvm::IntrusiveRefCntPtr<TargetInfo> Target =
260259
TargetInfo::CreateTargetInfo(Diags, *TargetOpts);

clang-tools-extra/clangd/unittests/ConfigCompileTests.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -298,8 +298,7 @@ TEST_F(ConfigCompileTests, DiagnosticSuppression) {
298298
"unreachable-code", "unused-variable",
299299
"typecheck_bool_condition",
300300
"unexpected_friend", "warn_alloca"));
301-
clang::DiagnosticOptions DiagOpts;
302-
clang::DiagnosticsEngine DiagEngine(new DiagnosticIDs, DiagOpts,
301+
clang::DiagnosticsEngine DiagEngine(new DiagnosticIDs, nullptr,
303302
new clang::IgnoringDiagConsumer);
304303

305304
using Diag = clang::Diagnostic;

clang-tools-extra/clangd/unittests/tweaks/TweakTests.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,7 @@ TEST(FileEdits, AbsolutePath) {
4444
for (const auto *Path : RelPaths)
4545
MemFS->addFile(Path, 0, llvm::MemoryBuffer::getMemBuffer("", Path));
4646
FileManager FM(FileSystemOptions(), MemFS);
47-
DiagnosticOptions DiagOpts;
48-
DiagnosticsEngine DE(new DiagnosticIDs, DiagOpts);
47+
DiagnosticsEngine DE(new DiagnosticIDs, new DiagnosticOptions);
4948
SourceManager SM(DE, FM);
5049

5150
for (const auto *Path : RelPaths) {

clang-tools-extra/include-cleaner/unittests/RecordTest.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -618,8 +618,8 @@ TEST_F(PragmaIncludeTest, ExportInUnnamedBuffer) {
618618
llvm::MemoryBuffer::getMemBufferCopy(Extra.getValue(),
619619
/*BufferName=*/""));
620620

621-
DiagnosticOptions DiagOpts;
622-
auto Diags = CompilerInstance::createDiagnostics(*VFS, DiagOpts);
621+
auto DiagOpts = llvm::makeIntrusiveRefCnt<DiagnosticOptions>();
622+
auto Diags = CompilerInstance::createDiagnostics(*VFS, DiagOpts.get());
623623
auto Invocation = std::make_unique<CompilerInvocation>();
624624
ASSERT_TRUE(CompilerInvocation::CreateFromArgs(*Invocation, {Filename.data()},
625625
*Diags, "clang"));

clang-tools-extra/include-cleaner/unittests/WalkASTTest.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,9 @@ std::vector<Decl::Kind> testWalk(llvm::StringRef TargetCode,
8585
// For each difference, show the target point in context, like a diagnostic.
8686
std::string DiagBuf;
8787
llvm::raw_string_ostream DiagOS(DiagBuf);
88-
DiagnosticOptions DiagOpts;
89-
DiagOpts.ShowLevel = 0;
90-
DiagOpts.ShowNoteIncludeStack = 0;
88+
auto *DiagOpts = new DiagnosticOptions();
89+
DiagOpts->ShowLevel = 0;
90+
DiagOpts->ShowNoteIncludeStack = 0;
9191
TextDiagnostic Diag(DiagOS, AST.context().getLangOpts(), DiagOpts);
9292
auto DiagnosePoint = [&](llvm::StringRef Message, unsigned Offset) {
9393
Diag.emitDiagnostic(

clang-tools-extra/modularize/ModularizeUtilities.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,10 @@ ModularizeUtilities::ModularizeUtilities(std::vector<std::string> &InputPaths,
4848
MissingHeaderCount(0),
4949
// Init clang stuff needed for loading the module map and preprocessing.
5050
LangOpts(new LangOptions()), DiagIDs(new DiagnosticIDs()),
51-
DC(llvm::errs(), DiagnosticOpts),
52-
Diagnostics(new DiagnosticsEngine(DiagIDs, DiagnosticOpts, &DC, false)),
51+
DiagnosticOpts(new DiagnosticOptions()),
52+
DC(llvm::errs(), DiagnosticOpts.get()),
53+
Diagnostics(
54+
new DiagnosticsEngine(DiagIDs, DiagnosticOpts.get(), &DC, false)),
5355
TargetOpts(new ModuleMapTargetOptions()),
5456
Target(TargetInfo::CreateTargetInfo(*Diagnostics, *TargetOpts)),
5557
FileMgr(new FileManager(FileSystemOpts)),

clang-tools-extra/modularize/ModularizeUtilities.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ class ModularizeUtilities {
198198
/// Diagnostic IDs.
199199
const llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs> DiagIDs;
200200
/// Options controlling the diagnostic engine.
201-
clang::DiagnosticOptions DiagnosticOpts;
201+
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions> DiagnosticOpts;
202202
/// Diagnostic consumer.
203203
clang::TextDiagnosticPrinter DC;
204204
/// Diagnostic engine.

clang-tools-extra/unittests/clang-apply-replacements/ApplyReplacementsTest.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ makeTUDiagnostics(const std::string &MainSourceFile, StringRef DiagnosticName,
3232
// Test to ensure diagnostics with no fixes, will be merged correctly
3333
// before applying.
3434
TEST(ApplyReplacementsTest, mergeDiagnosticsWithNoFixes) {
35-
DiagnosticOptions DiagOpts;
35+
IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts(new DiagnosticOptions());
3636
DiagnosticsEngine Diagnostics(
37-
IntrusiveRefCntPtr<DiagnosticIDs>(new DiagnosticIDs()), DiagOpts);
37+
IntrusiveRefCntPtr<DiagnosticIDs>(new DiagnosticIDs()), DiagOpts.get());
3838
FileManager Files((FileSystemOptions()));
3939
SourceManager SM(Diagnostics, Files);
4040
TUReplacements TURs;

clang-tools-extra/unittests/clang-tidy/ClangTidyOptionsTest.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -317,9 +317,9 @@ TEST(CheckOptionsValidation, MissingOptions) {
317317
ClangTidyContext Context(std::make_unique<DefaultOptionsProvider>(
318318
ClangTidyGlobalOptions(), Options));
319319
ClangTidyDiagnosticConsumer DiagConsumer(Context);
320-
auto DiagOpts = std::make_unique<DiagnosticOptions>();
321-
DiagnosticsEngine DE(new DiagnosticIDs(), *DiagOpts, &DiagConsumer, false);
322-
Context.setDiagnosticsEngine(std::move(DiagOpts), &DE);
320+
DiagnosticsEngine DE(new DiagnosticIDs(), new DiagnosticOptions,
321+
&DiagConsumer, false);
322+
Context.setDiagnosticsEngine(&DE);
323323
TestCheck TestCheck(&Context);
324324
EXPECT_FALSE(TestCheck.getLocal("Opt"));
325325
EXPECT_EQ(TestCheck.getLocal("Opt", "Unknown"), "Unknown");
@@ -347,9 +347,9 @@ TEST(CheckOptionsValidation, ValidIntOptions) {
347347
ClangTidyContext Context(std::make_unique<DefaultOptionsProvider>(
348348
ClangTidyGlobalOptions(), Options));
349349
ClangTidyDiagnosticConsumer DiagConsumer(Context);
350-
auto DiagOpts = std::make_unique<DiagnosticOptions>();
351-
DiagnosticsEngine DE(new DiagnosticIDs(), *DiagOpts, &DiagConsumer, false);
352-
Context.setDiagnosticsEngine(std::move(DiagOpts), &DE);
350+
DiagnosticsEngine DE(new DiagnosticIDs(), new DiagnosticOptions,
351+
&DiagConsumer, false);
352+
Context.setDiagnosticsEngine(&DE);
353353
TestCheck TestCheck(&Context);
354354

355355
CHECK_VAL(TestCheck.getIntLocal("IntExpected"), 1);
@@ -409,9 +409,9 @@ TEST(ValidConfiguration, ValidEnumOptions) {
409409
ClangTidyContext Context(std::make_unique<DefaultOptionsProvider>(
410410
ClangTidyGlobalOptions(), Options));
411411
ClangTidyDiagnosticConsumer DiagConsumer(Context);
412-
auto DiagOpts = std::make_unique<DiagnosticOptions>();
413-
DiagnosticsEngine DE(new DiagnosticIDs(), *DiagOpts, &DiagConsumer, false);
414-
Context.setDiagnosticsEngine(std::move(DiagOpts), &DE);
412+
DiagnosticsEngine DE(new DiagnosticIDs(), new DiagnosticOptions,
413+
&DiagConsumer, false);
414+
Context.setDiagnosticsEngine(&DE);
415415
TestCheck TestCheck(&Context);
416416

417417
CHECK_VAL(TestCheck.getIntLocal<Colours>("Valid"), Colours::Red);

clang-tools-extra/unittests/clang-tidy/ClangTidyTest.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,9 +96,9 @@ runCheckOnCode(StringRef Code, std::vector<ClangTidyError> *Errors = nullptr,
9696
ClangTidyContext Context(std::make_unique<DefaultOptionsProvider>(
9797
ClangTidyGlobalOptions(), Options));
9898
ClangTidyDiagnosticConsumer DiagConsumer(Context);
99-
auto DiagOpts = std::make_unique<DiagnosticOptions>();
100-
DiagnosticsEngine DE(new DiagnosticIDs(), *DiagOpts, &DiagConsumer, false);
101-
Context.setDiagnosticsEngine(std::move(DiagOpts), &DE);
99+
DiagnosticsEngine DE(new DiagnosticIDs(), new DiagnosticOptions,
100+
&DiagConsumer, false);
101+
Context.setDiagnosticsEngine(&DE);
102102

103103
std::vector<std::string> Args(1, "clang-tidy");
104104
Args.push_back("-fsyntax-only");

clang/include/clang/Basic/Diagnostic.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,7 @@ class DiagnosticsEngine : public RefCountedBase<DiagnosticsEngine> {
330330
unsigned ConstexprBacktraceLimit = 0;
331331

332332
IntrusiveRefCntPtr<DiagnosticIDs> Diags;
333-
DiagnosticOptions &DiagOpts;
333+
IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts;
334334
DiagnosticConsumer *Client = nullptr;
335335
std::unique_ptr<DiagnosticConsumer> Owner;
336336
SourceManager *SourceMgr = nullptr;
@@ -566,7 +566,7 @@ class DiagnosticsEngine : public RefCountedBase<DiagnosticsEngine> {
566566

567567
public:
568568
explicit DiagnosticsEngine(IntrusiveRefCntPtr<DiagnosticIDs> Diags,
569-
DiagnosticOptions &DiagOpts,
569+
IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts,
570570
DiagnosticConsumer *client = nullptr,
571571
bool ShouldOwnClient = true);
572572
DiagnosticsEngine(const DiagnosticsEngine &) = delete;
@@ -582,7 +582,7 @@ class DiagnosticsEngine : public RefCountedBase<DiagnosticsEngine> {
582582
}
583583

584584
/// Retrieve the diagnostic options.
585-
DiagnosticOptions &getDiagnosticOptions() const { return DiagOpts; }
585+
DiagnosticOptions &getDiagnosticOptions() const { return *DiagOpts; }
586586

587587
using diag_mapping_range = llvm::iterator_range<DiagState::const_iterator>;
588588

0 commit comments

Comments
 (0)