Skip to content

Commit f450f01

Browse files
committed
issue #10897 Incorrect warning about Objective-C Category method not being documented
1 parent b084d28 commit f450f01

File tree

5 files changed

+20
-8
lines changed

5 files changed

+20
-8
lines changed

src/classdef.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3793,6 +3793,7 @@ void ClassDefImpl::mergeMembers()
37933793
*/
37943794
void ClassDefImpl::mergeCategory(ClassDef *cat)
37953795
{
3796+
AUTO_TRACE();
37963797
ClassDefMutable *category = toClassDefMutable(cat);
37973798
if (category)
37983799
{
@@ -3836,7 +3837,7 @@ void ClassDefImpl::mergeCategory(ClassDef *cat)
38363837
MemberNameInfo *dstMni=dstMnd.find(srcMni->memberName());
38373838
if (dstMni) // method is already defined in the class
38383839
{
3839-
//printf("Existing member %s\n",srcMni->memberName());
3840+
AUTO_TRACE_ADD("Existing member {}",srcMni->memberName());
38403841
const auto &dstMi = dstMni->front();
38413842
const auto &srcMi = srcMni->front();
38423843
if (srcMi && dstMi)
@@ -3854,7 +3855,7 @@ void ClassDefImpl::mergeCategory(ClassDef *cat)
38543855
}
38553856
else // new method name
38563857
{
3857-
//printf("New member %s\n",srcMni->memberName());
3858+
AUTO_TRACE_ADD("New member {}",srcMni->memberName());
38583859
// create a deep copy of the list
38593860
MemberNameInfo *newMni = dstMnd.add(srcMni->memberName());
38603861

@@ -3868,7 +3869,7 @@ void ClassDefImpl::mergeCategory(ClassDef *cat)
38683869
if (newMd)
38693870
{
38703871
auto mmd = toMemberDefMutable(newMd.get());
3871-
//printf("Copying member %s\n",qPrint(mi->memberDef->name()));
3872+
AUTO_TRACE_ADD("Copying member {}",mmd->name());
38723873
mmd->moveTo(this);
38733874

38743875
auto newMi=std::make_unique<MemberInfo>(newMd.get(),prot,mi->virt(),mi->inherited(),mi->virtualBaseClass());

src/definition.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,15 @@ DefinitionImpl::DefinitionImpl(const DefinitionImpl &d)
288288
if (m_impl->isSymbol) addToMap(m_impl->name,m_impl->def);
289289
}
290290

291+
DefinitionImpl &DefinitionImpl::operator=(const DefinitionImpl &other)
292+
{
293+
if (this!=&other)
294+
{
295+
m_impl = std::make_unique<DefinitionImpl::IMPL>(*other.m_impl);
296+
}
297+
return *this;
298+
}
299+
291300
DefinitionImpl::~DefinitionImpl()
292301
{
293302
if (m_impl->isSymbol)

src/definitionimpl.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -153,8 +153,8 @@ class DefinitionMixin : public Base
153153
const QCString &defFileName,int defLine,int defColumn,
154154
const QCString &name,const char *b=nullptr,const char *d=nullptr,
155155
bool isSymbol=TRUE) : m_impl(this,defFileName,defLine,defColumn,name,b,d,isSymbol) {}
156-
DefinitionMixin(const DefinitionMixin &) = default;
157-
DefinitionMixin &operator=(const DefinitionMixin &) = default;
156+
DefinitionMixin(const DefinitionMixin &other) : Base(other), m_impl(other.m_impl) {}
157+
DefinitionMixin &operator=(const DefinitionMixin &other) { if (this!=&other) { m_impl = other.m_impl; }; return *this; }
158158
DefinitionMixin(DefinitionMixin &&) = delete;
159159
DefinitionMixin &operator=(DefinitionMixin &&) = delete;
160160
~DefinitionMixin() override = default;

src/doxygen.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7926,6 +7926,7 @@ static void createTemplateInstanceMembers()
79267926

79277927
static void mergeCategories()
79287928
{
7929+
AUTO_TRACE();
79297930
// merge members of categories into the class they extend
79307931
for (const auto &cd : *Doxygen::classLinkedMap)
79317932
{
@@ -7936,8 +7937,7 @@ static void mergeCategories()
79367937
ClassDefMutable *baseClass=toClassDefMutable(Doxygen::classLinkedMap->find(baseName));
79377938
if (baseClass)
79387939
{
7939-
//printf("*** merging members of category %s into %s\n",
7940-
// qPrint(cd->name()),qPrint(baseClass->name()));
7940+
AUTO_TRACE_ADD("merging members of category {} into {}",cd->name(),baseClass->name());
79417941
baseClass->mergeCategory(cd.get());
79427942
}
79437943
}

src/memberdef.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1432,7 +1432,9 @@ std::unique_ptr<MemberDef> MemberDefImpl::deepCopy() const
14321432
std::unique_ptr<MemberDefImpl> result(new MemberDefImpl(
14331433
getDefFileName(),getDefLine(),getDefColumn(),m_type,localName(),m_args,m_exception,
14341434
m_prot,m_virt,m_stat,m_related,m_mtype,m_tArgList,m_defArgList,m_metaData));
1435-
// first copy everything by reference
1435+
// first copy base members
1436+
result->DefinitionMixin<MemberDefMutable>::operator=(*this);
1437+
// then copy other members
14361438
result->m_typeConstraints = m_typeConstraints ;
14371439
result->m_declArgList = m_declArgList ;
14381440
result->m_classDef = m_classDef ;

0 commit comments

Comments
 (0)