diff options
Diffstat (limited to 'src/tools')
-rw-r--r-- | src/tools/qdoc/cppcodeparser.cpp | 5 | ||||
-rw-r--r-- | src/tools/qdoc/node.cpp | 3 |
2 files changed, 7 insertions, 1 deletions
diff --git a/src/tools/qdoc/cppcodeparser.cpp b/src/tools/qdoc/cppcodeparser.cpp index 46a62d629f..5d2a2c90d0 100644 --- a/src/tools/qdoc/cppcodeparser.cpp +++ b/src/tools/qdoc/cppcodeparser.cpp @@ -932,8 +932,11 @@ void CppCodeParser::processOtherMetaCommand(const Doc& doc, doc.location().warning(tr("Cannot find '%1' in '\\%2'").arg(arg).arg(COMMAND_RELATES)); } - else + else if (node->parent() != n) node->setRelates(static_cast<Aggregate*>(n)); + else + doc.location().warning(tr("Invalid use of '\\%1' (already a member of '%2')") + .arg(COMMAND_RELATES, arg)); } else if (command == COMMAND_CONTENTSPAGE) { setLink(node, Node::ContentsLink, arg); diff --git a/src/tools/qdoc/node.cpp b/src/tools/qdoc/node.cpp index c879d1d9b4..1fe0af352d 100644 --- a/src/tools/qdoc/node.cpp +++ b/src/tools/qdoc/node.cpp @@ -480,6 +480,9 @@ bool Node::fromFlagValue(FlagValue fv, bool defaultValue) */ void Node::setRelates(Aggregate *pseudoParent) { + if (pseudoParent == parent()) + return; + removeRelates(); relatesTo_ = pseudoParent; pseudoParent->addRelated(this); |