Skip to content

Commit

Permalink
Incorrect showing of hidden call graph
Browse files Browse the repository at this point in the history
When having:
** aa.cpp **
```
/// \file

void fie() {}

void fie_bare() {fie();}

void fie_hide() {fie();}

void fie_show() {fie();}
```

and ** aa.h **
```
/// the called fie
void fie();

/// the fie
void fie_bare();

/// the hide fie
/// \hidecallgraph
void fie_hide();

/// the show fie
/// \callgraph
void fie_show();
```
with
```
HAVE_DOT = YES
CALL_GRAPH = YES
```
This will lead to the fact that `fie_hide` still shows a call graph although it is explicitly disabled.
(analogous for caller graph, referenced by relation and references relation).
  • Loading branch information
albert-github committed Sep 11, 2023
1 parent c29b0e6 commit 3bc1ea4
Show file tree
Hide file tree
Showing 3 changed files with 60 additions and 24 deletions.
32 changes: 16 additions & 16 deletions src/doxygen.cpp
Expand Up @@ -3655,10 +3655,10 @@ static void buildFunctionList(const Entry *root)

md->addSectionsToDefinition(root->anchors);

md->enableCallGraph(md->hasCallGraph() || root->callGraph);
md->enableCallerGraph(md->hasCallerGraph() || root->callerGraph);
md->enableReferencedByRelation(md->hasReferencedByRelation() || root->referencedByRelation);
md->enableReferencesRelation(md->hasReferencesRelation() || root->referencesRelation);
md->enableCallGraph(md->hasCallGraph(), root->callGraph);
md->enableCallerGraph(md->hasCallerGraph(), root->callerGraph);
md->enableReferencedByRelation(md->hasReferencedByRelation(), root->referencedByRelation);
md->enableReferencesRelation(md->hasReferencesRelation(), root->referencesRelation);
md->addQualifiers(root->qualifiers);

// merge ingroup specifiers
Expand Down Expand Up @@ -3805,16 +3805,16 @@ static void findFriends()
}
mmd->setDocsForDefinition(fmd->isDocsForDefinition());

mmd->enableCallGraph(mmd->hasCallGraph() || fmd->hasCallGraph());
mmd->enableCallerGraph(mmd->hasCallerGraph() || fmd->hasCallerGraph());
mmd->enableReferencedByRelation(mmd->hasReferencedByRelation() || fmd->hasReferencedByRelation());
mmd->enableReferencesRelation(mmd->hasReferencesRelation() || fmd->hasReferencesRelation());
mmd->enableCallGraph(mmd->hasCallGraph(), fmd->hasCallGraph());
mmd->enableCallerGraph(mmd->hasCallerGraph(), fmd->hasCallerGraph());
mmd->enableReferencedByRelation(mmd->hasReferencedByRelation(), fmd->hasReferencedByRelation());
mmd->enableReferencesRelation(mmd->hasReferencesRelation(), fmd->hasReferencesRelation());
mmd->addQualifiers(fmd->getQualifiers());

fmd->enableCallGraph(mmd->hasCallGraph() || fmd->hasCallGraph());
fmd->enableCallerGraph(mmd->hasCallerGraph() || fmd->hasCallerGraph());
fmd->enableReferencedByRelation(mmd->hasReferencedByRelation() || fmd->hasReferencedByRelation());
fmd->enableReferencesRelation(mmd->hasReferencesRelation() || fmd->hasReferencesRelation());
fmd->enableCallGraph(mmd->hasCallGraph(), fmd->hasCallGraph());
fmd->enableCallerGraph(mmd->hasCallerGraph(), fmd->hasCallerGraph());
fmd->enableReferencedByRelation(mmd->hasReferencedByRelation(), fmd->hasReferencedByRelation());
fmd->enableReferencesRelation(mmd->hasReferencesRelation(), fmd->hasReferencesRelation());
fmd->addQualifiers(mmd->getQualifiers());
}
}
Expand Down Expand Up @@ -5198,10 +5198,10 @@ static void addMemberDocs(const Entry *root,
md->setRefItems(root->sli);
}

md->enableCallGraph(md->hasCallGraph() || root->callGraph);
md->enableCallerGraph(md->hasCallerGraph() || root->callerGraph);
md->enableReferencedByRelation(md->hasReferencedByRelation() || root->referencedByRelation);
md->enableReferencesRelation(md->hasReferencesRelation() || root->referencesRelation);
md->enableCallGraph(md->hasCallGraph(), root->callGraph);
md->enableCallerGraph(md->hasCallerGraph(), root->callerGraph);
md->enableReferencedByRelation(md->hasReferencedByRelation(), root->referencedByRelation);
md->enableReferencesRelation(md->hasReferencesRelation(), root->referencesRelation);
md->addQualifiers(root->qualifiers);

md->mergeMemberSpecifiers(spec);
Expand Down
48 changes: 40 additions & 8 deletions src/memberdef.cpp
Expand Up @@ -293,9 +293,13 @@ class MemberDefImpl : public DefinitionMixin<MemberDefMutable>
virtual void setFromAnonymousScope(bool b) override;
virtual void setFromAnonymousMember(MemberDef *m) override;
virtual void enableCallGraph(bool e) override;
virtual void enableCallGraph(bool e1, bool e2) override;
virtual void enableCallerGraph(bool e) override;
virtual void enableCallerGraph(bool e1, bool e2) override;
virtual void enableReferencedByRelation(bool e) override;
virtual void enableReferencedByRelation(bool e1, bool e2) override;
virtual void enableReferencesRelation(bool e) override;
virtual void enableReferencesRelation(bool e1, bool e2) override;
virtual void setTemplateMaster(MemberDef *mt) override;
virtual void addListReference(Definition *d) override;
virtual void setDocsForDefinition(bool b) override;
Expand Down Expand Up @@ -4810,24 +4814,52 @@ void MemberDefImpl::enableCallGraph(bool e)
if (e) Doxygen::parseSourcesNeeded = TRUE;
}

void MemberDefImpl::enableCallGraph(bool e1, bool e2)
{
if (e1 == e2) m_hasCallGraph=e1;
else m_hasCallGraph=!Config_getBool(CALL_GRAPH);
if (m_hasCallGraph) Doxygen::parseSourcesNeeded = TRUE;
}

void MemberDefImpl::enableCallerGraph(bool e)
{
m_hasCallerGraph=e;
if (e) Doxygen::parseSourcesNeeded = TRUE;
}

void MemberDefImpl::enableCallerGraph(bool e1, bool e2)
{
if (e1 == e2) m_hasCallerGraph=e1;
else m_hasCallerGraph=!Config_getBool(CALLER_GRAPH);
if (m_hasCallerGraph) Doxygen::parseSourcesNeeded = TRUE;
}

void MemberDefImpl::enableReferencedByRelation(bool e)
{
m_hasReferencedByRelation=e;
if (e) Doxygen::parseSourcesNeeded = TRUE;
}

void MemberDefImpl::enableReferencedByRelation(bool e1, bool e2)
{
if (e1 == e2) m_hasReferencedByRelation=e1;
else m_hasReferencedByRelation=!Config_getBool(REFERENCED_BY_RELATION);
if (m_hasReferencedByRelation) Doxygen::parseSourcesNeeded = TRUE;
}

void MemberDefImpl::enableReferencesRelation(bool e)
{
m_hasReferencesRelation=e;
if (e) Doxygen::parseSourcesNeeded = TRUE;
}

void MemberDefImpl::enableReferencesRelation(bool e1, bool e2)
{
if (e1 == e2) m_hasReferencesRelation=e1;
else m_hasReferencesRelation=!Config_getBool(REFERENCES_RELATION);
if (m_hasReferencesRelation) Doxygen::parseSourcesNeeded = TRUE;
}

bool MemberDefImpl::isObjCMethod() const
{
if (getClassDef() && getClassDef()->isObjectiveC() && isFunction()) return TRUE;
Expand Down Expand Up @@ -6118,15 +6150,15 @@ void combineDeclarationAndDefinition(MemberDefMutable *mdec,MemberDefMutable *md
mdef->setMemberDeclaration(mdec);
mdec->setMemberDefinition(mdef);

mdef->enableCallGraph(mdec->hasCallGraph() || mdef->hasCallGraph());
mdef->enableCallerGraph(mdec->hasCallerGraph() || mdef->hasCallerGraph());
mdec->enableCallGraph(mdec->hasCallGraph() || mdef->hasCallGraph());
mdec->enableCallerGraph(mdec->hasCallerGraph() || mdef->hasCallerGraph());
mdef->enableCallGraph(mdec->hasCallGraph(), mdef->hasCallGraph());
mdef->enableCallerGraph(mdec->hasCallerGraph(), mdef->hasCallerGraph());
mdec->enableCallGraph(mdec->hasCallGraph(), mdef->hasCallGraph());
mdec->enableCallerGraph(mdec->hasCallerGraph(), mdef->hasCallerGraph());

mdef->enableReferencedByRelation(mdec->hasReferencedByRelation() || mdef->hasReferencedByRelation());
mdef->enableReferencesRelation(mdec->hasReferencesRelation() || mdef->hasReferencesRelation());
mdec->enableReferencedByRelation(mdec->hasReferencedByRelation() || mdef->hasReferencedByRelation());
mdec->enableReferencesRelation(mdec->hasReferencesRelation() || mdef->hasReferencesRelation());
mdef->enableReferencedByRelation(mdec->hasReferencedByRelation(), mdef->hasReferencedByRelation());
mdef->enableReferencesRelation(mdec->hasReferencesRelation(), mdef->hasReferencesRelation());
mdec->enableReferencedByRelation(mdec->hasReferencedByRelation(), mdef->hasReferencedByRelation());
mdec->enableReferencesRelation(mdec->hasReferencesRelation(), mdef->hasReferencesRelation());

mdef->addQualifiers(mdec->getQualifiers());
mdec->addQualifiers(mdef->getQualifiers());
Expand Down
4 changes: 4 additions & 0 deletions src/memberdef.h
Expand Up @@ -380,10 +380,14 @@ class MemberDefMutable : public DefinitionMutable, public MemberDef
virtual void setFromAnonymousMember(MemberDef *m) = 0;

virtual void enableCallGraph(bool e) = 0;
virtual void enableCallGraph(bool e1, bool e2) = 0;
virtual void enableCallerGraph(bool e) = 0;
virtual void enableCallerGraph(bool e1, bool e2) = 0;

virtual void enableReferencedByRelation(bool e) = 0;
virtual void enableReferencedByRelation(bool e1, bool e2) = 0;
virtual void enableReferencesRelation(bool e) = 0;
virtual void enableReferencesRelation(bool e1, bool e2) = 0;

virtual void setTemplateMaster(MemberDef *mt) = 0;
virtual void addListReference(Definition *d) = 0;
Expand Down

0 comments on commit 3bc1ea4

Please sign in to comment.