Skip to content

Commit 13e1a2c

Browse files
committed
Reapply "[clang] Remove intrusive reference count from DiagnosticOptions (#139584)"
This reverts commit e2a8855. Build failures were fixed right away and reverting the original commit without the fixes breaks the build again.
1 parent 45f6036 commit 13e1a2c

File tree

135 files changed

+603
-568
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

+603
-568
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-
IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts(new DiagnosticOptions());
99+
DiagnosticOptions DiagOpts;
100100
DiagnosticsEngine Diagnostics(
101-
IntrusiveRefCntPtr<DiagnosticIDs>(new DiagnosticIDs()), DiagOpts.get());
101+
IntrusiveRefCntPtr<DiagnosticIDs>(new DiagnosticIDs()), DiagOpts);
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-
IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts = new DiagnosticOptions();
130-
clang::TextDiagnosticPrinter DiagnosticPrinter(errs(), &*DiagOpts);
129+
DiagnosticOptions DiagOpts;
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-
IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts(new DiagnosticOptions);
459-
DiagnosticsEngine Diagnostics(new DiagnosticIDs, &*DiagOpts);
460-
TextDiagnosticPrinter DiagnosticPrinter(outs(), &*DiagOpts);
458+
DiagnosticOptions DiagOpts;
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-
IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts(new DiagnosticOptions());
180-
clang::TextDiagnosticPrinter DiagnosticPrinter(errs(), &*DiagOpts);
179+
DiagnosticOptions DiagOpts;
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-
IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts(new DiagnosticOptions());
76-
TextDiagnosticPrinter DiagnosticPrinter(errs(), &*DiagOpts);
75+
DiagnosticOptions DiagOpts;
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,15 +97,14 @@ class ErrorReporter {
9797
ErrorReporter(ClangTidyContext &Context, FixBehaviour ApplyFixes,
9898
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> BaseFS)
9999
: Files(FileSystemOptions(), std::move(BaseFS)),
100-
DiagOpts(new DiagnosticOptions()),
101-
DiagPrinter(new TextDiagnosticPrinter(llvm::outs(), &*DiagOpts)),
102-
Diags(IntrusiveRefCntPtr<DiagnosticIDs>(new DiagnosticIDs), &*DiagOpts,
100+
DiagPrinter(new TextDiagnosticPrinter(llvm::outs(), DiagOpts)),
101+
Diags(IntrusiveRefCntPtr<DiagnosticIDs>(new DiagnosticIDs), DiagOpts,
103102
DiagPrinter),
104103
SourceMgr(Diags, Files), Context(Context), ApplyFixes(ApplyFixes) {
105-
DiagOpts->ShowColors = Context.getOptions().UseColor.value_or(
104+
DiagOpts.ShowColors = Context.getOptions().UseColor.value_or(
106105
llvm::sys::Process::StandardOutHasColors());
107106
DiagPrinter->BeginSourceFile(LangOpts);
108-
if (DiagOpts->ShowColors && !llvm::sys::Process::StandardOutIsDisplayed()) {
107+
if (DiagOpts.ShowColors && !llvm::sys::Process::StandardOutIsDisplayed()) {
109108
llvm::sys::Process::UseANSIEscapeCodes(true);
110109
}
111110
}
@@ -308,7 +307,7 @@ class ErrorReporter {
308307

309308
FileManager Files;
310309
LangOptions LangOpts; // FIXME: use langopts from each original file
311-
IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts;
310+
DiagnosticOptions DiagOpts;
312311
DiagnosticConsumer *DiagPrinter;
313312
DiagnosticsEngine Diags;
314313
SourceManager SourceMgr;
@@ -516,10 +515,10 @@ getCheckOptions(const ClangTidyOptions &Options,
516515
Options),
517516
AllowEnablingAnalyzerAlphaCheckers);
518517
ClangTidyDiagnosticConsumer DiagConsumer(Context);
519-
DiagnosticsEngine DE(llvm::makeIntrusiveRefCnt<DiagnosticIDs>(),
520-
llvm::makeIntrusiveRefCnt<DiagnosticOptions>(),
518+
auto DiagOpts = std::make_unique<DiagnosticOptions>();
519+
DiagnosticsEngine DE(llvm::makeIntrusiveRefCnt<DiagnosticIDs>(), *DiagOpts,
521520
&DiagConsumer, /*ShouldOwnClient=*/false);
522-
Context.setDiagnosticsEngine(&DE);
521+
Context.setDiagnosticsEngine(std::move(DiagOpts), &DE);
523522
ClangTidyASTConsumerFactory Factory(Context);
524523
return Factory.getCheckOptions();
525524
}
@@ -558,9 +557,10 @@ runClangTidy(clang::tidy::ClangTidyContext &Context,
558557
Context.setProfileStoragePrefix(StoreCheckProfile);
559558

560559
ClangTidyDiagnosticConsumer DiagConsumer(Context, nullptr, true, ApplyAnyFix);
561-
DiagnosticsEngine DE(new DiagnosticIDs(), new DiagnosticOptions(),
562-
&DiagConsumer, /*ShouldOwnClient=*/false);
563-
Context.setDiagnosticsEngine(&DE);
560+
auto DiagOpts = std::make_unique<DiagnosticOptions>();
561+
DiagnosticsEngine DE(new DiagnosticIDs(), *DiagOpts, &DiagConsumer,
562+
/*ShouldOwnClient=*/false);
563+
Context.setDiagnosticsEngine(std::move(DiagOpts), &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: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,9 @@ 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(DiagnosticsEngine *DiagEngine) {
78+
void setDiagnosticsEngine(std::unique_ptr<DiagnosticOptions> DiagOpts,
79+
DiagnosticsEngine *DiagEngine) {
80+
this->DiagOpts = std::move(DiagOpts);
7981
this->DiagEngine = DiagEngine;
8082
}
8183

@@ -231,6 +233,7 @@ class ClangTidyContext {
231233
// Writes to Stats.
232234
friend class ClangTidyDiagnosticConsumer;
233235

236+
std::unique_ptr<DiagnosticOptions> DiagOpts = nullptr;
234237
DiagnosticsEngine *DiagEngine = nullptr;
235238
std::unique_ptr<ClangTidyOptionsProvider> OptionsProvider;
236239

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, new DiagnosticOptions,
74+
Diags(new DiagnosticIDs, DiagOpts,
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: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ class ExpandModularHeadersPPCallbacks : public PPCallbacks {
128128
llvm::IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem> InMemoryFs;
129129

130130
SourceManager &Sources;
131+
DiagnosticOptions DiagOpts;
131132
DiagnosticsEngine Diags;
132133
LangOptions LangOpts;
133134
HeaderSearchOptions HSOpts;

clang-tools-extra/clangd/Compiler.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,9 @@ 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-
CIOpts.Diags = CompilerInstance::createDiagnostics(
114-
*CIOpts.VFS, new DiagnosticOptions, &D, false);
113+
DiagnosticOptions DiagOpts;
114+
CIOpts.Diags =
115+
CompilerInstance::createDiagnostics(*CIOpts.VFS, DiagOpts, &D, false);
115116
CIOpts.ProbePrecompiled = false;
116117
std::unique_ptr<CompilerInvocation> CI = createInvocation(ArgStrs, CIOpts);
117118
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;
190191
IntrusiveRefCntPtr<DiagnosticsEngine> Diags =
191-
CompilerInstance::createDiagnostics(*VFS, new DiagnosticOptions,
192-
&IgnoreDiags,
192+
CompilerInstance::createDiagnostics(*VFS, DiagOpts, &IgnoreDiags,
193193
/*ShouldOwnClient=*/false);
194194

195195
LangOptions LangOpts;

clang-tools-extra/clangd/ParsedAST.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -556,7 +556,8 @@ 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-
CTContext->setDiagnosticsEngine(&Clang->getDiagnostics());
559+
// The lifetime of DiagnosticOptions is managed by \c Clang.
560+
CTContext->setDiagnosticsEngine(nullptr, &Clang->getDiagnostics());
560561
CTContext->setASTContext(&Clang->getASTContext());
561562
CTContext->setCurrentFile(Filename);
562563
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: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,8 @@ namespace {
253253
bool isValidTarget(llvm::StringRef Triple) {
254254
std::shared_ptr<TargetOptions> TargetOpts(new TargetOptions);
255255
TargetOpts->Triple = Triple.str();
256-
DiagnosticsEngine Diags(new DiagnosticIDs, new DiagnosticOptions,
256+
DiagnosticOptions DiagOpts;
257+
DiagnosticsEngine Diags(new DiagnosticIDs, DiagOpts,
257258
new IgnoringDiagConsumer);
258259
llvm::IntrusiveRefCntPtr<TargetInfo> Target =
259260
TargetInfo::CreateTargetInfo(Diags, *TargetOpts);

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

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

304305
using Diag = clang::Diagnostic;

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

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

5051
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-
auto DiagOpts = llvm::makeIntrusiveRefCnt<DiagnosticOptions>();
622-
auto Diags = CompilerInstance::createDiagnostics(*VFS, DiagOpts.get());
621+
DiagnosticOptions DiagOpts;
622+
auto Diags = CompilerInstance::createDiagnostics(*VFS, DiagOpts);
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-
auto *DiagOpts = new DiagnosticOptions();
89-
DiagOpts->ShowLevel = 0;
90-
DiagOpts->ShowNoteIncludeStack = 0;
88+
DiagnosticOptions DiagOpts;
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: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,8 @@ 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-
DiagnosticOpts(new DiagnosticOptions()),
52-
DC(llvm::errs(), DiagnosticOpts.get()),
53-
Diagnostics(
54-
new DiagnosticsEngine(DiagIDs, DiagnosticOpts.get(), &DC, false)),
51+
DC(llvm::errs(), DiagnosticOpts),
52+
Diagnostics(new DiagnosticsEngine(DiagIDs, DiagnosticOpts, &DC, false)),
5553
TargetOpts(new ModuleMapTargetOptions()),
5654
Target(TargetInfo::CreateTargetInfo(*Diagnostics, *TargetOpts)),
5755
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-
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions> DiagnosticOpts;
201+
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-
IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts(new DiagnosticOptions());
35+
DiagnosticOptions DiagOpts;
3636
DiagnosticsEngine Diagnostics(
37-
IntrusiveRefCntPtr<DiagnosticIDs>(new DiagnosticIDs()), DiagOpts.get());
37+
IntrusiveRefCntPtr<DiagnosticIDs>(new DiagnosticIDs()), DiagOpts);
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-
DiagnosticsEngine DE(new DiagnosticIDs(), new DiagnosticOptions,
321-
&DiagConsumer, false);
322-
Context.setDiagnosticsEngine(&DE);
320+
auto DiagOpts = std::make_unique<DiagnosticOptions>();
321+
DiagnosticsEngine DE(new DiagnosticIDs(), *DiagOpts, &DiagConsumer, false);
322+
Context.setDiagnosticsEngine(std::move(DiagOpts), &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-
DiagnosticsEngine DE(new DiagnosticIDs(), new DiagnosticOptions,
351-
&DiagConsumer, false);
352-
Context.setDiagnosticsEngine(&DE);
350+
auto DiagOpts = std::make_unique<DiagnosticOptions>();
351+
DiagnosticsEngine DE(new DiagnosticIDs(), *DiagOpts, &DiagConsumer, false);
352+
Context.setDiagnosticsEngine(std::move(DiagOpts), &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-
DiagnosticsEngine DE(new DiagnosticIDs(), new DiagnosticOptions,
413-
&DiagConsumer, false);
414-
Context.setDiagnosticsEngine(&DE);
412+
auto DiagOpts = std::make_unique<DiagnosticOptions>();
413+
DiagnosticsEngine DE(new DiagnosticIDs(), *DiagOpts, &DiagConsumer, false);
414+
Context.setDiagnosticsEngine(std::move(DiagOpts), &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-
DiagnosticsEngine DE(new DiagnosticIDs(), new DiagnosticOptions,
100-
&DiagConsumer, false);
101-
Context.setDiagnosticsEngine(&DE);
99+
auto DiagOpts = std::make_unique<DiagnosticOptions>();
100+
DiagnosticsEngine DE(new DiagnosticIDs(), *DiagOpts, &DiagConsumer, false);
101+
Context.setDiagnosticsEngine(std::move(DiagOpts), &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-
IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts;
333+
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-
IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts,
569+
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)