qdoc: Check and warn if \relates is used incorrectly

There are instances in the documentation where a member function
tries to set itself also a related non-member of its parent. This
should be treated as invalid behavior, as it likely causes also
problems during deletion of the node tree.

QDoc now checks for and warns about these instances.

Change-Id: I951e0de6be4d48618c60b8a0382e2c70700cc402
Task-number: QTBUG-47751
Reviewed-by: Martin Smith <martin.smith@digia.com>
This commit is contained in:
Topi Reinio 2015-08-19 13:18:39 +02:00 committed by Topi Reiniö
parent d558100aa7
commit 2473f4fac3
2 changed files with 7 additions and 1 deletions

View File

@ -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);

View File

@ -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);