[clang-tools-extra] 6990276 - [clang-doc] Introduce abstractions for pointer operations (#184872)
via cfe-commits
cfe-commits at lists.llvm.org
Fri Mar 6 18:04:21 PST 2026
Author: Paul Kirth
Date: 2026-03-07T02:04:13Z
New Revision: 69902769c74718295dd553a1cd0bb6c56ff2645a
URL: https://github.com/llvm/llvm-project/commit/69902769c74718295dd553a1cd0bb6c56ff2645a
DIFF: https://github.com/llvm/llvm-project/commit/69902769c74718295dd553a1cd0bb6c56ff2645a.diff
LOG: [clang-doc] Introduce abstractions for pointer operations (#184872)
Since we're migrating from std::unique_ptr to raw pointers via
arena allocation, we want to have some interfaces that abstract
these operations away, and can be changed to keep the system
working without introducing a lot of unnecessary churn in the code.
Added:
Modified:
clang-tools-extra/clang-doc/BitcodeReader.cpp
clang-tools-extra/clang-doc/JSONGenerator.cpp
clang-tools-extra/clang-doc/MDGenerator.cpp
clang-tools-extra/clang-doc/Representation.cpp
clang-tools-extra/clang-doc/Representation.h
clang-tools-extra/clang-doc/Serialize.cpp
clang-tools-extra/clang-doc/YAMLGenerator.cpp
clang-tools-extra/clang-doc/benchmarks/ClangDocBenchmark.cpp
clang-tools-extra/clang-doc/tool/ClangDocMain.cpp
clang-tools-extra/unittests/clang-doc/BitcodeTest.cpp
clang-tools-extra/unittests/clang-doc/MDGeneratorTest.cpp
clang-tools-extra/unittests/clang-doc/MergeTest.cpp
clang-tools-extra/unittests/clang-doc/SerializeTest.cpp
clang-tools-extra/unittests/clang-doc/YAMLGeneratorTest.cpp
Removed:
################################################################################
diff --git a/clang-tools-extra/clang-doc/BitcodeReader.cpp b/clang-tools-extra/clang-doc/BitcodeReader.cpp
index 6cd0cb06871de..1589e20064889 100644
--- a/clang-tools-extra/clang-doc/BitcodeReader.cpp
+++ b/clang-tools-extra/clang-doc/BitcodeReader.cpp
@@ -507,8 +507,8 @@ template <> llvm::Expected<CommentInfo *> getCommentInfo(EnumValueInfo *I) {
}
template <> llvm::Expected<CommentInfo *> getCommentInfo(CommentInfo *I) {
- I->Children.emplace_back(std::make_unique<CommentInfo>());
- return I->Children.back().get();
+ I->Children.emplace_back(allocatePtr<CommentInfo>());
+ return getPtr(I->Children.back());
}
template <> llvm::Expected<CommentInfo *> getCommentInfo(ConceptInfo *I) {
@@ -1078,8 +1078,8 @@ llvm::Error ClangDocBitcodeReader::readBlockInfoBlock() {
template <typename T>
llvm::Expected<OwnedPtr<Info>> ClangDocBitcodeReader::createInfo(unsigned ID) {
llvm::TimeTraceScope("Reducing infos", "createInfo");
- OwnedPtr<Info> I = std::make_unique<T>();
- if (auto Err = readBlock(ID, static_cast<T *>(I.get())))
+ OwnedPtr<Info> I = doc::allocatePtr<T>();
+ if (auto Err = readBlock(ID, static_cast<T *>(getPtr(I))))
return std::move(Err);
return OwnedPtr<Info>{std::move(I)};
}
diff --git a/clang-tools-extra/clang-doc/JSONGenerator.cpp b/clang-tools-extra/clang-doc/JSONGenerator.cpp
index 579d794c36636..d710078993403 100644
--- a/clang-tools-extra/clang-doc/JSONGenerator.cpp
+++ b/clang-tools-extra/clang-doc/JSONGenerator.cpp
@@ -927,7 +927,7 @@ Error JSONGenerator::generateDocumentation(
StringSet<> CreatedDirs;
StringMap<std::vector<doc::Info *>> FileToInfos;
for (const auto &Group : Infos) {
- Info *Info = Group.getValue().get();
+ Info *Info = getPtr(Group.getValue());
SmallString<128> Path;
auto RootDirStr = RootDir.str() + "/json";
diff --git a/clang-tools-extra/clang-doc/MDGenerator.cpp b/clang-tools-extra/clang-doc/MDGenerator.cpp
index b9224a4f0a9a4..dee3c21f72a38 100644
--- a/clang-tools-extra/clang-doc/MDGenerator.cpp
+++ b/clang-tools-extra/clang-doc/MDGenerator.cpp
@@ -423,7 +423,7 @@ llvm::Error MDGenerator::generateDocumentation(
// Collect all output by file name and create the necessary directories.
llvm::StringMap<std::vector<doc::Info *>> FileToInfos;
for (const auto &Group : Infos) {
- doc::Info *Info = Group.getValue().get();
+ doc::Info *Info = getPtr(Group.getValue());
llvm::SmallString<128> Path;
llvm::sys::path::native(RootDir, Path);
diff --git a/clang-tools-extra/clang-doc/Representation.cpp b/clang-tools-extra/clang-doc/Representation.cpp
index 6eea8c8eba74d..c92fe1e3ec45d 100644
--- a/clang-tools-extra/clang-doc/Representation.cpp
+++ b/clang-tools-extra/clang-doc/Representation.cpp
@@ -89,10 +89,10 @@ static llvm::Expected<OwnedPtr<Info>> reduce(OwningPtrArray<Info> &Values) {
if (Values.empty() || !Values[0])
return llvm::createStringError(llvm::inconvertibleErrorCode(),
"no value to reduce");
- OwnedPtr<Info> Merged = std::make_unique<T>(Values[0]->USR);
- T *Tmp = static_cast<T *>(Merged.get());
+ OwnedPtr<Info> Merged = allocatePtr<T>(Values[0]->USR);
+ T *Tmp = static_cast<T *>(getPtr(Merged));
for (auto &I : Values)
- Tmp->merge(std::move(*static_cast<T *>(I.get())));
+ Tmp->merge(std::move(*static_cast<T *>(getPtr(I))));
return std::move(Merged);
}
diff --git a/clang-tools-extra/clang-doc/Representation.h b/clang-tools-extra/clang-doc/Representation.h
index 60d63236c4433..e692579ae95a5 100644
--- a/clang-tools-extra/clang-doc/Representation.h
+++ b/clang-tools-extra/clang-doc/Representation.h
@@ -48,6 +48,17 @@ template <typename T> using OwningPtrVec = std::vector<OwnedPtr<T>>;
// To be eventually transitioned to arena-allocated arrays of bare pointers.
template <typename T> using OwningPtrArray = std::vector<OwnedPtr<T>>;
+// A helper function to create an owned pointer, abstracting away the memory
+// allocation mechanism.
+template <typename T, typename... Args>
+OwnedPtr<T> allocatePtr(Args &&...args) {
+ return std::make_unique<T>(std::forward<Args>(args)...);
+}
+
+// A helper function to access the underlying pointer from an owned pointer,
+// abstracting away the pointer dereferencing mechanism.
+template <typename T> T *getPtr(const OwnedPtr<T> &O) { return O.get(); }
+
// SHA1'd hash of a USR.
using SymbolID = std::array<uint8_t, 20>;
diff --git a/clang-tools-extra/clang-doc/Serialize.cpp b/clang-tools-extra/clang-doc/Serialize.cpp
index b10cf09287e3a..6487d0e969065 100644
--- a/clang-tools-extra/clang-doc/Serialize.cpp
+++ b/clang-tools-extra/clang-doc/Serialize.cpp
@@ -241,7 +241,7 @@ void ClangDocCommentVisitor::parseComment(const comments::Comment *C) {
ConstCommentVisitor<ClangDocCommentVisitor>::visit(C);
for (comments::Comment *Child :
llvm::make_range(C->child_begin(), C->child_end())) {
- CurrentCI.Children.emplace_back(std::make_unique<CommentInfo>());
+ CurrentCI.Children.emplace_back(allocatePtr<CommentInfo>());
ClangDocCommentVisitor Visitor(*CurrentCI.Children.back());
Visitor.parseComment(Child);
}
@@ -349,17 +349,17 @@ static std::string serialize(T &I, DiagnosticsEngine &Diags) {
std::string serialize(OwnedPtr<Info> &I, DiagnosticsEngine &Diags) {
switch (I->IT) {
case InfoType::IT_namespace:
- return serialize(*static_cast<NamespaceInfo *>(I.get()), Diags);
+ return serialize(*static_cast<NamespaceInfo *>(getPtr(I)), Diags);
case InfoType::IT_record:
- return serialize(*static_cast<RecordInfo *>(I.get()), Diags);
+ return serialize(*static_cast<RecordInfo *>(getPtr(I)), Diags);
case InfoType::IT_enum:
- return serialize(*static_cast<EnumInfo *>(I.get()), Diags);
+ return serialize(*static_cast<EnumInfo *>(getPtr(I)), Diags);
case InfoType::IT_function:
- return serialize(*static_cast<FunctionInfo *>(I.get()), Diags);
+ return serialize(*static_cast<FunctionInfo *>(getPtr(I)), Diags);
case InfoType::IT_concept:
- return serialize(*static_cast<ConceptInfo *>(I.get()), Diags);
+ return serialize(*static_cast<ConceptInfo *>(getPtr(I)), Diags);
case InfoType::IT_variable:
- return serialize(*static_cast<VarInfo *>(I.get()), Diags);
+ return serialize(*static_cast<VarInfo *>(getPtr(I)), Diags);
case InfoType::IT_friend:
case InfoType::IT_typedef:
case InfoType::IT_default:
@@ -491,20 +491,20 @@ template <typename ChildType>
static OwnedPtr<Info> makeAndInsertIntoParent(ChildType Child) {
if (Child.Namespace.empty()) {
// Insert into unnamed parent namespace.
- auto ParentNS = std::make_unique<NamespaceInfo>();
+ auto ParentNS = allocatePtr<NamespaceInfo>();
InsertChild(ParentNS->Children, std::forward<ChildType>(Child));
return ParentNS;
}
switch (Child.Namespace[0].RefType) {
case InfoType::IT_namespace: {
- auto ParentNS = std::make_unique<NamespaceInfo>();
+ auto ParentNS = allocatePtr<NamespaceInfo>();
ParentNS->USR = Child.Namespace[0].USR;
InsertChild(ParentNS->Children, std::forward<ChildType>(Child));
return ParentNS;
}
case InfoType::IT_record: {
- auto ParentRec = std::make_unique<RecordInfo>();
+ auto ParentRec = allocatePtr<RecordInfo>();
ParentRec->USR = Child.Namespace[0].USR;
InsertChild(ParentRec->Children, std::forward<ChildType>(Child));
return ParentRec;
@@ -944,7 +944,7 @@ std::pair<OwnedPtr<Info>, OwnedPtr<Info>> emitInfo(const NamespaceDecl *D,
const FullComment *FC,
Location Loc,
bool PublicOnly) {
- auto NSI = std::make_unique<NamespaceInfo>();
+ auto NSI = allocatePtr<NamespaceInfo>();
bool IsInAnonymousNamespace = false;
populateInfo(*NSI, D, FC, IsInAnonymousNamespace);
if (!shouldSerializeInfo(PublicOnly, IsInAnonymousNamespace, D))
@@ -1017,7 +1017,7 @@ std::pair<OwnedPtr<Info>, OwnedPtr<Info>> emitInfo(const RecordDecl *D,
Location Loc,
bool PublicOnly) {
- auto RI = std::make_unique<RecordInfo>();
+ auto RI = allocatePtr<RecordInfo>();
bool IsInAnonymousNamespace = false;
populateSymbolInfo(*RI, D, FC, Loc, IsInAnonymousNamespace);
diff --git a/clang-tools-extra/clang-doc/YAMLGenerator.cpp b/clang-tools-extra/clang-doc/YAMLGenerator.cpp
index 736eb400e496f..17b55fa1e124c 100644
--- a/clang-tools-extra/clang-doc/YAMLGenerator.cpp
+++ b/clang-tools-extra/clang-doc/YAMLGenerator.cpp
@@ -357,7 +357,7 @@ llvm::Error YAMLGenerator::generateDocumentation(
StringRef RootDir, llvm::StringMap<doc::OwnedPtr<doc::Info>> Infos,
const ClangDocContext &CDCtx, std::string DirName) {
for (const auto &Group : Infos) {
- doc::Info *Info = Group.getValue().get();
+ doc::Info *Info = getPtr(Group.getValue());
// Output file names according to the USR except the global namesapce.
// Anonymous namespaces are taken care of in serialization, so here we can
diff --git a/clang-tools-extra/clang-doc/benchmarks/ClangDocBenchmark.cpp b/clang-tools-extra/clang-doc/benchmarks/ClangDocBenchmark.cpp
index 18e15de8129a1..be11cc80198e8 100644
--- a/clang-tools-extra/clang-doc/benchmarks/ClangDocBenchmark.cpp
+++ b/clang-tools-extra/clang-doc/benchmarks/ClangDocBenchmark.cpp
@@ -91,7 +91,7 @@ BENCHMARK(BM_Mapper_Scale)->Range(10, 10000);
// --- Reducer Benchmarks ---
static void BM_SerializeFunctionInfo(benchmark::State &State) {
- auto I = std::make_unique<FunctionInfo>();
+ auto I = allocatePtr<FunctionInfo>();
I->Name = "f";
I->DefLoc = Location(0, 0, "test.cpp");
I->ReturnType = TypeInfo("void");
@@ -119,7 +119,7 @@ static void BM_MergeInfos_Scale(benchmark::State &State) {
OwningPtrArray<Info> Input;
Input.reserve(State.range(0));
for (int i = 0; i < State.range(0); ++i) {
- auto I = std::make_unique<FunctionInfo>();
+ auto I = allocatePtr<FunctionInfo>();
I->Name = "f";
I->USR = USR;
I->DefLoc = Location(10, i, "test.cpp");
@@ -181,7 +181,7 @@ static void BM_JSONGenerator_Scale(benchmark::State &State) {
}
int NumRecords = State.range(0);
- auto NI = std::make_unique<NamespaceInfo>();
+ auto NI = allocatePtr<NamespaceInfo>();
NI->Name = "GlobalNamespace";
for (int i = 0; i < NumRecords; ++i) {
NI->Children.Records.emplace_back(SymbolID{(uint8_t)(i & 0xFF)},
@@ -200,7 +200,7 @@ static void BM_JSONGenerator_Scale(benchmark::State &State) {
for (auto _ : State) {
Output.clear();
- auto Err = (*G)->generateDocForInfo(NI.get(), OS, CDCtx);
+ auto Err = (*G)->generateDocForInfo(getPtr(NI), OS, CDCtx);
if (Err) {
State.SkipWithError("generateDocForInfo failed");
llvm::consumeError(std::move(Err));
diff --git a/clang-tools-extra/clang-doc/tool/ClangDocMain.cpp b/clang-tools-extra/clang-doc/tool/ClangDocMain.cpp
index c189a414324c8..8ea1aa4b9e89f 100644
--- a/clang-tools-extra/clang-doc/tool/ClangDocMain.cpp
+++ b/clang-tools-extra/clang-doc/tool/ClangDocMain.cpp
@@ -228,11 +228,11 @@ sortUsrToInfo(llvm::StringMap<doc::OwnedPtr<doc::Info>> &USRToInfo) {
for (auto &I : USRToInfo) {
auto &Info = I.second;
if (Info->IT == doc::InfoType::IT_namespace) {
- auto *Namespace = static_cast<clang::doc::NamespaceInfo *>(Info.get());
+ auto *Namespace = static_cast<clang::doc::NamespaceInfo *>(getPtr(Info));
Namespace->Children.sort();
}
if (Info->IT == doc::InfoType::IT_record) {
- auto *Record = static_cast<clang::doc::RecordInfo *>(Info.get());
+ auto *Record = static_cast<clang::doc::RecordInfo *>(getPtr(Info));
Record->Children.sort();
}
}
@@ -400,7 +400,7 @@ Example usage for a project using a compile commands database:
{
llvm::TimeTraceScope Merge("addInfoToIndex");
std::lock_guard<llvm::sys::Mutex> Guard(IndexMutex);
- clang::doc::Generator::addInfoToIndex(CDCtx.Idx, Reduced.get());
+ clang::doc::Generator::addInfoToIndex(CDCtx.Idx, getPtr(Reduced));
}
// Save in the result map (needs a lock due to threaded access).
{
diff --git a/clang-tools-extra/unittests/clang-doc/BitcodeTest.cpp b/clang-tools-extra/unittests/clang-doc/BitcodeTest.cpp
index 85ec01e5bd342..3688c1e04b1e5 100644
--- a/clang-tools-extra/unittests/clang-doc/BitcodeTest.cpp
+++ b/clang-tools-extra/unittests/clang-doc/BitcodeTest.cpp
@@ -105,10 +105,10 @@ TEST_F(BitcodeTest, emitRecordInfoBitcode) {
// Documentation for the data member.
CommentInfo TopComment;
TopComment.Kind = CommentKind::CK_FullComment;
- TopComment.Children.emplace_back(std::make_unique<CommentInfo>());
+ TopComment.Children.emplace_back(allocatePtr<CommentInfo>());
CommentInfo *Brief = TopComment.Children.back().get();
Brief->Kind = CommentKind::CK_ParagraphComment;
- Brief->Children.emplace_back(std::make_unique<CommentInfo>());
+ Brief->Children.emplace_back(allocatePtr<CommentInfo>());
Brief->Children.back()->Kind = CommentKind::CK_TextComment;
Brief->Children.back()->Name = "ParagraphComment";
Brief->Children.back()->Text = "Value of the thing.";
@@ -197,10 +197,10 @@ TEST_F(BitcodeTest, emitTypedefInfoBitcode) {
CommentInfo Top;
Top.Kind = CommentKind::CK_FullComment;
- Top.Children.emplace_back(std::make_unique<CommentInfo>());
+ Top.Children.emplace_back(allocatePtr<CommentInfo>());
CommentInfo *BlankLine = Top.Children.back().get();
BlankLine->Kind = CommentKind::CK_ParagraphComment;
- BlankLine->Children.emplace_back(std::make_unique<CommentInfo>());
+ BlankLine->Children.emplace_back(allocatePtr<CommentInfo>());
BlankLine->Children.back()->Kind = CommentKind::CK_TextComment;
I.Description.emplace_back(std::move(Top));
@@ -233,102 +233,97 @@ TEST_F(BitcodeTest, emitInfoWithCommentBitcode) {
CommentInfo Top;
Top.Kind = CommentKind::CK_FullComment;
- Top.Children.emplace_back(std::make_unique<CommentInfo>());
+ Top.Children.emplace_back(allocatePtr<CommentInfo>());
CommentInfo *BlankLine = Top.Children.back().get();
BlankLine->Kind = CommentKind::CK_ParagraphComment;
- BlankLine->Children.emplace_back(std::make_unique<CommentInfo>());
+ BlankLine->Children.emplace_back(allocatePtr<CommentInfo>());
BlankLine->Children.back()->Kind = CommentKind::CK_TextComment;
- Top.Children.emplace_back(std::make_unique<CommentInfo>());
+ Top.Children.emplace_back(allocatePtr<CommentInfo>());
CommentInfo *Brief = Top.Children.back().get();
Brief->Kind = CommentKind::CK_ParagraphComment;
- Brief->Children.emplace_back(std::make_unique<CommentInfo>());
+ Brief->Children.emplace_back(allocatePtr<CommentInfo>());
Brief->Children.back()->Kind = CommentKind::CK_TextComment;
Brief->Children.back()->Name = "ParagraphComment";
Brief->Children.back()->Text = " Brief description.";
- Top.Children.emplace_back(std::make_unique<CommentInfo>());
+ Top.Children.emplace_back(allocatePtr<CommentInfo>());
CommentInfo *Extended = Top.Children.back().get();
Extended->Kind = CommentKind::CK_ParagraphComment;
- Extended->Children.emplace_back(std::make_unique<CommentInfo>());
+ Extended->Children.emplace_back(allocatePtr<CommentInfo>());
Extended->Children.back()->Kind = CommentKind::CK_TextComment;
Extended->Children.back()->Text = " Extended description that";
- Extended->Children.emplace_back(std::make_unique<CommentInfo>());
+ Extended->Children.emplace_back(allocatePtr<CommentInfo>());
Extended->Children.back()->Kind = CommentKind::CK_TextComment;
Extended->Children.back()->Text = " continues onto the next line.";
- Top.Children.emplace_back(std::make_unique<CommentInfo>());
+ Top.Children.emplace_back(allocatePtr<CommentInfo>());
CommentInfo *HTML = Top.Children.back().get();
HTML->Kind = CommentKind::CK_ParagraphComment;
- HTML->Children.emplace_back(std::make_unique<CommentInfo>());
+ HTML->Children.emplace_back(allocatePtr<CommentInfo>());
HTML->Children.back()->Kind = CommentKind::CK_TextComment;
- HTML->Children.emplace_back(std::make_unique<CommentInfo>());
+ HTML->Children.emplace_back(allocatePtr<CommentInfo>());
HTML->Children.back()->Kind = CommentKind::CK_HTMLStartTagComment;
HTML->Children.back()->Name = "ul";
HTML->Children.back()->AttrKeys.emplace_back("class");
HTML->Children.back()->AttrValues.emplace_back("test");
- HTML->Children.emplace_back(std::make_unique<CommentInfo>());
+ HTML->Children.emplace_back(allocatePtr<CommentInfo>());
HTML->Children.back()->Kind = CommentKind::CK_HTMLStartTagComment;
HTML->Children.back()->Name = "li";
- HTML->Children.emplace_back(std::make_unique<CommentInfo>());
+ HTML->Children.emplace_back(allocatePtr<CommentInfo>());
HTML->Children.back()->Kind = CommentKind::CK_TextComment;
HTML->Children.back()->Text = " Testing.";
- HTML->Children.emplace_back(std::make_unique<CommentInfo>());
+ HTML->Children.emplace_back(allocatePtr<CommentInfo>());
HTML->Children.back()->Kind = CommentKind::CK_HTMLEndTagComment;
HTML->Children.back()->Name = "ul";
HTML->Children.back()->SelfClosing = true;
- Top.Children.emplace_back(std::make_unique<CommentInfo>());
+ Top.Children.emplace_back(allocatePtr<CommentInfo>());
CommentInfo *Verbatim = Top.Children.back().get();
Verbatim->Kind = CommentKind::CK_VerbatimBlockComment;
Verbatim->Name = "verbatim";
Verbatim->CloseName = "endverbatim";
- Verbatim->Children.emplace_back(std::make_unique<CommentInfo>());
+ Verbatim->Children.emplace_back(allocatePtr<CommentInfo>());
Verbatim->Children.back()->Kind = CommentKind::CK_VerbatimBlockLineComment;
Verbatim->Children.back()->Text = " The description continues.";
- Top.Children.emplace_back(std::make_unique<CommentInfo>());
+ Top.Children.emplace_back(allocatePtr<CommentInfo>());
CommentInfo *ParamOut = Top.Children.back().get();
ParamOut->Kind = CommentKind::CK_ParamCommandComment;
ParamOut->Direction = "[out]";
ParamOut->ParamName = "I";
ParamOut->Explicit = true;
- ParamOut->Children.emplace_back(std::make_unique<CommentInfo>());
+ ParamOut->Children.emplace_back(allocatePtr<CommentInfo>());
ParamOut->Children.back()->Kind = CommentKind::CK_ParagraphComment;
- ParamOut->Children.back()->Children.emplace_back(
- std::make_unique<CommentInfo>());
+ ParamOut->Children.back()->Children.emplace_back(allocatePtr<CommentInfo>());
ParamOut->Children.back()->Children.back()->Kind =
CommentKind::CK_TextComment;
- ParamOut->Children.back()->Children.emplace_back(
- std::make_unique<CommentInfo>());
+ ParamOut->Children.back()->Children.emplace_back(allocatePtr<CommentInfo>());
ParamOut->Children.back()->Children.back()->Kind =
CommentKind::CK_TextComment;
ParamOut->Children.back()->Children.back()->Text = " is a parameter.";
- Top.Children.emplace_back(std::make_unique<CommentInfo>());
+ Top.Children.emplace_back(allocatePtr<CommentInfo>());
CommentInfo *ParamIn = Top.Children.back().get();
ParamIn->Kind = CommentKind::CK_ParamCommandComment;
ParamIn->Direction = "[in]";
ParamIn->ParamName = "J";
- ParamIn->Children.emplace_back(std::make_unique<CommentInfo>());
+ ParamIn->Children.emplace_back(allocatePtr<CommentInfo>());
ParamIn->Children.back()->Kind = CommentKind::CK_ParagraphComment;
- ParamIn->Children.back()->Children.emplace_back(
- std::make_unique<CommentInfo>());
+ ParamIn->Children.back()->Children.emplace_back(allocatePtr<CommentInfo>());
ParamIn->Children.back()->Children.back()->Kind = CommentKind::CK_TextComment;
ParamIn->Children.back()->Children.back()->Text = " is a parameter.";
- ParamIn->Children.back()->Children.emplace_back(
- std::make_unique<CommentInfo>());
+ ParamIn->Children.back()->Children.emplace_back(allocatePtr<CommentInfo>());
ParamIn->Children.back()->Children.back()->Kind = CommentKind::CK_TextComment;
- Top.Children.emplace_back(std::make_unique<CommentInfo>());
+ Top.Children.emplace_back(allocatePtr<CommentInfo>());
CommentInfo *Return = Top.Children.back().get();
Return->Kind = CommentKind::CK_BlockCommandComment;
Return->Name = "return";
Return->Explicit = true;
- Return->Children.emplace_back(std::make_unique<CommentInfo>());
+ Return->Children.emplace_back(allocatePtr<CommentInfo>());
Return->Children.back()->Kind = CommentKind::CK_ParagraphComment;
- Return->Children.back()->Children.emplace_back(
- std::make_unique<CommentInfo>());
+ Return->Children.back()->Children.emplace_back(allocatePtr<CommentInfo>());
Return->Children.back()->Children.back()->Kind = CommentKind::CK_TextComment;
Return->Children.back()->Children.back()->Text = "void";
diff --git a/clang-tools-extra/unittests/clang-doc/MDGeneratorTest.cpp b/clang-tools-extra/unittests/clang-doc/MDGeneratorTest.cpp
index b44b09b28e90f..7d13437b91bd1 100644
--- a/clang-tools-extra/unittests/clang-doc/MDGeneratorTest.cpp
+++ b/clang-tools-extra/unittests/clang-doc/MDGeneratorTest.cpp
@@ -222,102 +222,97 @@ TEST_F(MDGeneratorTest, emitCommentMD) {
CommentInfo Top;
Top.Kind = CommentKind::CK_FullComment;
- Top.Children.emplace_back(std::make_unique<CommentInfo>());
+ Top.Children.emplace_back(allocatePtr<CommentInfo>());
CommentInfo *BlankLine = Top.Children.back().get();
BlankLine->Kind = CommentKind::CK_ParagraphComment;
- BlankLine->Children.emplace_back(std::make_unique<CommentInfo>());
+ BlankLine->Children.emplace_back(allocatePtr<CommentInfo>());
BlankLine->Children.back()->Kind = CommentKind::CK_TextComment;
- Top.Children.emplace_back(std::make_unique<CommentInfo>());
+ Top.Children.emplace_back(allocatePtr<CommentInfo>());
CommentInfo *Brief = Top.Children.back().get();
Brief->Kind = CommentKind::CK_ParagraphComment;
- Brief->Children.emplace_back(std::make_unique<CommentInfo>());
+ Brief->Children.emplace_back(allocatePtr<CommentInfo>());
Brief->Children.back()->Kind = CommentKind::CK_TextComment;
Brief->Children.back()->Name = "ParagraphComment";
Brief->Children.back()->Text = " Brief description.";
- Top.Children.emplace_back(std::make_unique<CommentInfo>());
+ Top.Children.emplace_back(allocatePtr<CommentInfo>());
CommentInfo *Extended = Top.Children.back().get();
Extended->Kind = CommentKind::CK_ParagraphComment;
- Extended->Children.emplace_back(std::make_unique<CommentInfo>());
+ Extended->Children.emplace_back(allocatePtr<CommentInfo>());
Extended->Children.back()->Kind = CommentKind::CK_TextComment;
Extended->Children.back()->Text = " Extended description that";
- Extended->Children.emplace_back(std::make_unique<CommentInfo>());
+ Extended->Children.emplace_back(allocatePtr<CommentInfo>());
Extended->Children.back()->Kind = CommentKind::CK_TextComment;
Extended->Children.back()->Text = " continues onto the next line.";
- Top.Children.emplace_back(std::make_unique<CommentInfo>());
+ Top.Children.emplace_back(allocatePtr<CommentInfo>());
CommentInfo *HTML = Top.Children.back().get();
HTML->Kind = CommentKind::CK_ParagraphComment;
- HTML->Children.emplace_back(std::make_unique<CommentInfo>());
+ HTML->Children.emplace_back(allocatePtr<CommentInfo>());
HTML->Children.back()->Kind = CommentKind::CK_TextComment;
- HTML->Children.emplace_back(std::make_unique<CommentInfo>());
+ HTML->Children.emplace_back(allocatePtr<CommentInfo>());
HTML->Children.back()->Kind = CommentKind::CK_HTMLStartTagComment;
HTML->Children.back()->Name = "ul";
HTML->Children.back()->AttrKeys.emplace_back("class");
HTML->Children.back()->AttrValues.emplace_back("test");
- HTML->Children.emplace_back(std::make_unique<CommentInfo>());
+ HTML->Children.emplace_back(allocatePtr<CommentInfo>());
HTML->Children.back()->Kind = CommentKind::CK_HTMLStartTagComment;
HTML->Children.back()->Name = "li";
- HTML->Children.emplace_back(std::make_unique<CommentInfo>());
+ HTML->Children.emplace_back(allocatePtr<CommentInfo>());
HTML->Children.back()->Kind = CommentKind::CK_TextComment;
HTML->Children.back()->Text = " Testing.";
- HTML->Children.emplace_back(std::make_unique<CommentInfo>());
+ HTML->Children.emplace_back(allocatePtr<CommentInfo>());
HTML->Children.back()->Kind = CommentKind::CK_HTMLEndTagComment;
HTML->Children.back()->Name = "ul";
HTML->Children.back()->SelfClosing = true;
- Top.Children.emplace_back(std::make_unique<CommentInfo>());
+ Top.Children.emplace_back(allocatePtr<CommentInfo>());
CommentInfo *Verbatim = Top.Children.back().get();
Verbatim->Kind = CommentKind::CK_VerbatimBlockComment;
Verbatim->Name = "verbatim";
Verbatim->CloseName = "endverbatim";
- Verbatim->Children.emplace_back(std::make_unique<CommentInfo>());
+ Verbatim->Children.emplace_back(allocatePtr<CommentInfo>());
Verbatim->Children.back()->Kind = CommentKind::CK_VerbatimBlockLineComment;
Verbatim->Children.back()->Text = " The description continues.";
- Top.Children.emplace_back(std::make_unique<CommentInfo>());
+ Top.Children.emplace_back(allocatePtr<CommentInfo>());
CommentInfo *ParamOut = Top.Children.back().get();
ParamOut->Kind = CommentKind::CK_ParamCommandComment;
ParamOut->Direction = "[out]";
ParamOut->ParamName = "I";
ParamOut->Explicit = true;
- ParamOut->Children.emplace_back(std::make_unique<CommentInfo>());
+ ParamOut->Children.emplace_back(allocatePtr<CommentInfo>());
ParamOut->Children.back()->Kind = CommentKind::CK_ParagraphComment;
- ParamOut->Children.back()->Children.emplace_back(
- std::make_unique<CommentInfo>());
+ ParamOut->Children.back()->Children.emplace_back(allocatePtr<CommentInfo>());
ParamOut->Children.back()->Children.back()->Kind =
CommentKind::CK_TextComment;
- ParamOut->Children.back()->Children.emplace_back(
- std::make_unique<CommentInfo>());
+ ParamOut->Children.back()->Children.emplace_back(allocatePtr<CommentInfo>());
ParamOut->Children.back()->Children.back()->Kind =
CommentKind::CK_TextComment;
ParamOut->Children.back()->Children.back()->Text = " is a parameter.";
- Top.Children.emplace_back(std::make_unique<CommentInfo>());
+ Top.Children.emplace_back(allocatePtr<CommentInfo>());
CommentInfo *ParamIn = Top.Children.back().get();
ParamIn->Kind = CommentKind::CK_ParamCommandComment;
ParamIn->Direction = "[in]";
ParamIn->ParamName = "J";
- ParamIn->Children.emplace_back(std::make_unique<CommentInfo>());
+ ParamIn->Children.emplace_back(allocatePtr<CommentInfo>());
ParamIn->Children.back()->Kind = CommentKind::CK_ParagraphComment;
- ParamIn->Children.back()->Children.emplace_back(
- std::make_unique<CommentInfo>());
+ ParamIn->Children.back()->Children.emplace_back(allocatePtr<CommentInfo>());
ParamIn->Children.back()->Children.back()->Kind = CommentKind::CK_TextComment;
ParamIn->Children.back()->Children.back()->Text = " is a parameter.";
- ParamIn->Children.back()->Children.emplace_back(
- std::make_unique<CommentInfo>());
+ ParamIn->Children.back()->Children.emplace_back(allocatePtr<CommentInfo>());
ParamIn->Children.back()->Children.back()->Kind = CommentKind::CK_TextComment;
- Top.Children.emplace_back(std::make_unique<CommentInfo>());
+ Top.Children.emplace_back(allocatePtr<CommentInfo>());
CommentInfo *Return = Top.Children.back().get();
Return->Kind = CommentKind::CK_BlockCommandComment;
Return->Name = "return";
Return->Explicit = true;
- Return->Children.emplace_back(std::make_unique<CommentInfo>());
+ Return->Children.emplace_back(allocatePtr<CommentInfo>());
Return->Children.back()->Kind = CommentKind::CK_ParagraphComment;
- Return->Children.back()->Children.emplace_back(
- std::make_unique<CommentInfo>());
+ Return->Children.back()->Children.emplace_back(allocatePtr<CommentInfo>());
Return->Children.back()->Children.back()->Kind = CommentKind::CK_TextComment;
Return->Children.back()->Children.back()->Text = "void";
diff --git a/clang-tools-extra/unittests/clang-doc/MergeTest.cpp b/clang-tools-extra/unittests/clang-doc/MergeTest.cpp
index d6f210475780f..344f1bfd74f94 100644
--- a/clang-tools-extra/unittests/clang-doc/MergeTest.cpp
+++ b/clang-tools-extra/unittests/clang-doc/MergeTest.cpp
@@ -45,10 +45,10 @@ TEST_F(MergeTest, mergeNamespaceInfos) {
Two.Children.Enums.back().Name = "TwoEnum";
OwningPtrVec<Info> Infos;
- Infos.emplace_back(std::make_unique<NamespaceInfo>(std::move(One)));
- Infos.emplace_back(std::make_unique<NamespaceInfo>(std::move(Two)));
+ Infos.emplace_back(allocatePtr<NamespaceInfo>(std::move(One)));
+ Infos.emplace_back(allocatePtr<NamespaceInfo>(std::move(Two)));
- auto Expected = std::make_unique<NamespaceInfo>();
+ auto Expected = allocatePtr<NamespaceInfo>();
Expected->Name = "Namespace";
Expected->Namespace.emplace_back(EmptySID, "A", InfoType::IT_namespace);
@@ -117,10 +117,10 @@ TEST_F(MergeTest, mergeRecordInfos) {
Two.Children.Enums.back().Name = "TwoEnum";
OwningPtrVec<Info> Infos;
- Infos.emplace_back(std::make_unique<RecordInfo>(std::move(One)));
- Infos.emplace_back(std::make_unique<RecordInfo>(std::move(Two)));
+ Infos.emplace_back(allocatePtr<RecordInfo>(std::move(One)));
+ Infos.emplace_back(allocatePtr<RecordInfo>(std::move(Two)));
- auto Expected = std::make_unique<RecordInfo>();
+ auto Expected = allocatePtr<RecordInfo>();
Expected->Name = "r";
Expected->IsTypeDef = true;
Expected->Namespace.emplace_back(EmptySID, "A", InfoType::IT_namespace);
@@ -169,9 +169,9 @@ TEST_F(MergeTest, mergeFunctionInfos) {
One.Description.emplace_back();
auto *OneFullComment = &One.Description.back();
OneFullComment->Kind = CommentKind::CK_FullComment;
- auto OneParagraphComment = std::make_unique<CommentInfo>();
+ auto OneParagraphComment = allocatePtr<CommentInfo>();
OneParagraphComment->Kind = CommentKind::CK_ParagraphComment;
- auto OneTextComment = std::make_unique<CommentInfo>();
+ auto OneTextComment = allocatePtr<CommentInfo>();
OneTextComment->Kind = CommentKind::CK_TextComment;
OneTextComment->Text = "This is a text comment.";
OneParagraphComment->Children.push_back(std::move(OneTextComment));
@@ -189,19 +189,19 @@ TEST_F(MergeTest, mergeFunctionInfos) {
Two.Description.emplace_back();
auto *TwoFullComment = &Two.Description.back();
TwoFullComment->Kind = CommentKind::CK_FullComment;
- auto TwoParagraphComment = std::make_unique<CommentInfo>();
+ auto TwoParagraphComment = allocatePtr<CommentInfo>();
TwoParagraphComment->Kind = CommentKind::CK_ParagraphComment;
- auto TwoTextComment = std::make_unique<CommentInfo>();
+ auto TwoTextComment = allocatePtr<CommentInfo>();
TwoTextComment->Kind = CommentKind::CK_TextComment;
TwoTextComment->Text = "This is a text comment.";
TwoParagraphComment->Children.push_back(std::move(TwoTextComment));
TwoFullComment->Children.push_back(std::move(TwoParagraphComment));
OwningPtrVec<Info> Infos;
- Infos.emplace_back(std::make_unique<FunctionInfo>(std::move(One)));
- Infos.emplace_back(std::make_unique<FunctionInfo>(std::move(Two)));
+ Infos.emplace_back(allocatePtr<FunctionInfo>(std::move(One)));
+ Infos.emplace_back(allocatePtr<FunctionInfo>(std::move(Two)));
- auto Expected = std::make_unique<FunctionInfo>();
+ auto Expected = allocatePtr<FunctionInfo>();
Expected->Name = "f";
Expected->Namespace.emplace_back(EmptySID, "A", InfoType::IT_namespace);
@@ -216,9 +216,9 @@ TEST_F(MergeTest, mergeFunctionInfos) {
Expected->Description.emplace_back();
auto *ExpectedFullComment = &Expected->Description.back();
ExpectedFullComment->Kind = CommentKind::CK_FullComment;
- auto ExpectedParagraphComment = std::make_unique<CommentInfo>();
+ auto ExpectedParagraphComment = allocatePtr<CommentInfo>();
ExpectedParagraphComment->Kind = CommentKind::CK_ParagraphComment;
- auto ExpectedTextComment = std::make_unique<CommentInfo>();
+ auto ExpectedTextComment = allocatePtr<CommentInfo>();
ExpectedTextComment->Kind = CommentKind::CK_TextComment;
ExpectedTextComment->Text = "This is a text comment.";
ExpectedParagraphComment->Children.push_back(std::move(ExpectedTextComment));
@@ -250,10 +250,10 @@ TEST_F(MergeTest, mergeEnumInfos) {
Two.Members.emplace_back("Y");
OwningPtrVec<Info> Infos;
- Infos.emplace_back(std::make_unique<EnumInfo>(std::move(One)));
- Infos.emplace_back(std::make_unique<EnumInfo>(std::move(Two)));
+ Infos.emplace_back(allocatePtr<EnumInfo>(std::move(One)));
+ Infos.emplace_back(allocatePtr<EnumInfo>(std::move(Two)));
- auto Expected = std::make_unique<EnumInfo>();
+ auto Expected = allocatePtr<EnumInfo>();
Expected->Name = "e";
Expected->Namespace.emplace_back(EmptySID, "A", InfoType::IT_namespace);
diff --git a/clang-tools-extra/unittests/clang-doc/SerializeTest.cpp b/clang-tools-extra/unittests/clang-doc/SerializeTest.cpp
index f59ea02f9e1a3..33fb0e634564b 100644
--- a/clang-tools-extra/unittests/clang-doc/SerializeTest.cpp
+++ b/clang-tools-extra/unittests/clang-doc/SerializeTest.cpp
@@ -96,12 +96,12 @@ static void extractInfosFromCodeWithArgs(StringRef Code,
CommentInfo MakeOneLineCommentInfo(const std::string &Text) {
CommentInfo TopComment;
TopComment.Kind = "FullComment";
- TopComment.Children.emplace_back(std::make_unique<CommentInfo>());
+ TopComment.Children.emplace_back(allocatePtr<CommentInfo>());
CommentInfo *Brief = TopComment.Children.back().get();
Brief->Kind = "ParagraphComment";
- Brief->Children.emplace_back(std::make_unique<CommentInfo>());
+ Brief->Children.emplace_back(allocatePtr<CommentInfo>());
Brief->Children.back()->Kind = "TextComment";
Brief->Children.back()->Name = "ParagraphComment";
Brief->Children.back()->Text = Text;
diff --git a/clang-tools-extra/unittests/clang-doc/YAMLGeneratorTest.cpp b/clang-tools-extra/unittests/clang-doc/YAMLGeneratorTest.cpp
index db62c9246ceb4..554fe56b41cac 100644
--- a/clang-tools-extra/unittests/clang-doc/YAMLGeneratorTest.cpp
+++ b/clang-tools-extra/unittests/clang-doc/YAMLGeneratorTest.cpp
@@ -94,10 +94,10 @@ TEST_F(YAMLGeneratorTest, emitRecordYAML) {
// Member documentation.
CommentInfo TopComment;
TopComment.Kind = CommentKind::CK_FullComment;
- TopComment.Children.emplace_back(std::make_unique<CommentInfo>());
+ TopComment.Children.emplace_back(allocatePtr<CommentInfo>());
CommentInfo *Brief = TopComment.Children.back().get();
Brief->Kind = CommentKind::CK_ParagraphComment;
- Brief->Children.emplace_back(std::make_unique<CommentInfo>());
+ Brief->Children.emplace_back(allocatePtr<CommentInfo>());
Brief->Children.back()->Kind = CommentKind::CK_TextComment;
Brief->Children.back()->Name = "ParagraphComment";
Brief->Children.back()->Text = "Value of the thing.";
@@ -379,102 +379,97 @@ TEST_F(YAMLGeneratorTest, emitCommentYAML) {
CommentInfo Top;
Top.Kind = CommentKind::CK_FullComment;
- Top.Children.emplace_back(std::make_unique<CommentInfo>());
+ Top.Children.emplace_back(allocatePtr<CommentInfo>());
CommentInfo *BlankLine = Top.Children.back().get();
BlankLine->Kind = CommentKind::CK_ParagraphComment;
- BlankLine->Children.emplace_back(std::make_unique<CommentInfo>());
+ BlankLine->Children.emplace_back(allocatePtr<CommentInfo>());
BlankLine->Children.back()->Kind = CommentKind::CK_TextComment;
- Top.Children.emplace_back(std::make_unique<CommentInfo>());
+ Top.Children.emplace_back(allocatePtr<CommentInfo>());
CommentInfo *Brief = Top.Children.back().get();
Brief->Kind = CommentKind::CK_ParagraphComment;
- Brief->Children.emplace_back(std::make_unique<CommentInfo>());
+ Brief->Children.emplace_back(allocatePtr<CommentInfo>());
Brief->Children.back()->Kind = CommentKind::CK_TextComment;
Brief->Children.back()->Name = "ParagraphComment";
Brief->Children.back()->Text = " Brief description.";
- Top.Children.emplace_back(std::make_unique<CommentInfo>());
+ Top.Children.emplace_back(allocatePtr<CommentInfo>());
CommentInfo *Extended = Top.Children.back().get();
Extended->Kind = CommentKind::CK_ParagraphComment;
- Extended->Children.emplace_back(std::make_unique<CommentInfo>());
+ Extended->Children.emplace_back(allocatePtr<CommentInfo>());
Extended->Children.back()->Kind = CommentKind::CK_TextComment;
Extended->Children.back()->Text = " Extended description that";
- Extended->Children.emplace_back(std::make_unique<CommentInfo>());
+ Extended->Children.emplace_back(allocatePtr<CommentInfo>());
Extended->Children.back()->Kind = CommentKind::CK_TextComment;
Extended->Children.back()->Text = " continues onto the next line.";
- Top.Children.emplace_back(std::make_unique<CommentInfo>());
+ Top.Children.emplace_back(allocatePtr<CommentInfo>());
CommentInfo *HTML = Top.Children.back().get();
HTML->Kind = CommentKind::CK_ParagraphComment;
- HTML->Children.emplace_back(std::make_unique<CommentInfo>());
+ HTML->Children.emplace_back(allocatePtr<CommentInfo>());
HTML->Children.back()->Kind = CommentKind::CK_TextComment;
- HTML->Children.emplace_back(std::make_unique<CommentInfo>());
+ HTML->Children.emplace_back(allocatePtr<CommentInfo>());
HTML->Children.back()->Kind = CommentKind::CK_HTMLStartTagComment;
HTML->Children.back()->Name = "ul";
HTML->Children.back()->AttrKeys.emplace_back("class");
HTML->Children.back()->AttrValues.emplace_back("test");
- HTML->Children.emplace_back(std::make_unique<CommentInfo>());
+ HTML->Children.emplace_back(allocatePtr<CommentInfo>());
HTML->Children.back()->Kind = CommentKind::CK_HTMLStartTagComment;
HTML->Children.back()->Name = "li";
- HTML->Children.emplace_back(std::make_unique<CommentInfo>());
+ HTML->Children.emplace_back(allocatePtr<CommentInfo>());
HTML->Children.back()->Kind = CommentKind::CK_TextComment;
HTML->Children.back()->Text = " Testing.";
- HTML->Children.emplace_back(std::make_unique<CommentInfo>());
+ HTML->Children.emplace_back(allocatePtr<CommentInfo>());
HTML->Children.back()->Kind = CommentKind::CK_HTMLEndTagComment;
HTML->Children.back()->Name = "ul";
HTML->Children.back()->SelfClosing = true;
- Top.Children.emplace_back(std::make_unique<CommentInfo>());
+ Top.Children.emplace_back(allocatePtr<CommentInfo>());
CommentInfo *Verbatim = Top.Children.back().get();
Verbatim->Kind = CommentKind::CK_VerbatimBlockComment;
Verbatim->Name = "verbatim";
Verbatim->CloseName = "endverbatim";
- Verbatim->Children.emplace_back(std::make_unique<CommentInfo>());
+ Verbatim->Children.emplace_back(allocatePtr<CommentInfo>());
Verbatim->Children.back()->Kind = CommentKind::CK_VerbatimBlockLineComment;
Verbatim->Children.back()->Text = " The description continues.";
- Top.Children.emplace_back(std::make_unique<CommentInfo>());
+ Top.Children.emplace_back(allocatePtr<CommentInfo>());
CommentInfo *ParamOut = Top.Children.back().get();
ParamOut->Kind = CommentKind::CK_ParamCommandComment;
ParamOut->Direction = "[out]";
ParamOut->ParamName = "I";
ParamOut->Explicit = true;
- ParamOut->Children.emplace_back(std::make_unique<CommentInfo>());
+ ParamOut->Children.emplace_back(allocatePtr<CommentInfo>());
ParamOut->Children.back()->Kind = CommentKind::CK_ParagraphComment;
- ParamOut->Children.back()->Children.emplace_back(
- std::make_unique<CommentInfo>());
+ ParamOut->Children.back()->Children.emplace_back(allocatePtr<CommentInfo>());
ParamOut->Children.back()->Children.back()->Kind =
CommentKind::CK_TextComment;
- ParamOut->Children.back()->Children.emplace_back(
- std::make_unique<CommentInfo>());
+ ParamOut->Children.back()->Children.emplace_back(allocatePtr<CommentInfo>());
ParamOut->Children.back()->Children.back()->Kind =
CommentKind::CK_TextComment;
ParamOut->Children.back()->Children.back()->Text = " is a parameter.";
- Top.Children.emplace_back(std::make_unique<CommentInfo>());
+ Top.Children.emplace_back(allocatePtr<CommentInfo>());
CommentInfo *ParamIn = Top.Children.back().get();
ParamIn->Kind = CommentKind::CK_ParamCommandComment;
ParamIn->Direction = "[in]";
ParamIn->ParamName = "J";
- ParamIn->Children.emplace_back(std::make_unique<CommentInfo>());
+ ParamIn->Children.emplace_back(allocatePtr<CommentInfo>());
ParamIn->Children.back()->Kind = CommentKind::CK_ParagraphComment;
- ParamIn->Children.back()->Children.emplace_back(
- std::make_unique<CommentInfo>());
+ ParamIn->Children.back()->Children.emplace_back(allocatePtr<CommentInfo>());
ParamIn->Children.back()->Children.back()->Kind = CommentKind::CK_TextComment;
ParamIn->Children.back()->Children.back()->Text = " is a parameter.";
- ParamIn->Children.back()->Children.emplace_back(
- std::make_unique<CommentInfo>());
+ ParamIn->Children.back()->Children.emplace_back(allocatePtr<CommentInfo>());
ParamIn->Children.back()->Children.back()->Kind = CommentKind::CK_TextComment;
- Top.Children.emplace_back(std::make_unique<CommentInfo>());
+ Top.Children.emplace_back(allocatePtr<CommentInfo>());
CommentInfo *Return = Top.Children.back().get();
Return->Kind = CommentKind::CK_BlockCommandComment;
Return->Name = "return";
Return->Explicit = true;
- Return->Children.emplace_back(std::make_unique<CommentInfo>());
+ Return->Children.emplace_back(allocatePtr<CommentInfo>());
Return->Children.back()->Kind = CommentKind::CK_ParagraphComment;
- Return->Children.back()->Children.emplace_back(
- std::make_unique<CommentInfo>());
+ Return->Children.back()->Children.emplace_back(allocatePtr<CommentInfo>());
Return->Children.back()->Children.back()->Kind = CommentKind::CK_TextComment;
Return->Children.back()->Children.back()->Text = "void";
More information about the cfe-commits
mailing list