diff --git a/src/tools/qdoc/cppcodeparser.cpp b/src/tools/qdoc/cppcodeparser.cpp index 46a62d629fd..5d2a2c90d0b 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(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 c879d1d9b41..1fe0af352dc 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);