diff options
author | Topi Reinio <topi.reinio@qt.io> | 2021-05-10 23:17:59 +0200 |
---|---|---|
committer | Topi Reinio <topi.reinio@qt.io> | 2021-05-12 11:08:05 +0200 |
commit | c3f59a2a7dc81622ab3fde30a5b8409f423426d0 (patch) | |
tree | f6a6bc1936d95b5f96e44744b573600f4b312d6f /src/qdoc/docparser.cpp | |
parent | 5d5fd7de6ecc21d3a642e1e55c5282b60a08fc6b (diff) | |
download | qttools-c3f59a2a7dc81622ab3fde30a5b8409f423426d0.tar.gz |
qdoc: Skip multi-line descriptions of enum values marked with \omitvalue
Previous method did not correctly handle multi-line descriptions for
enum values omitted from the documentation which we have multiple
instances of in the source. These description paragraphs are now
skipped entirely.
After \omitvalue, skip all content until a new paragraph, a \value
command, or another \omitvalue.
Pick-to: 6.1
Task-number: QTBUG-92386
Change-Id: If9284ad2936019bc9afbfaa7cbf5cfbdbdd3cfa4
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Diffstat (limited to 'src/qdoc/docparser.cpp')
-rw-r--r-- | src/qdoc/docparser.cpp | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/qdoc/docparser.cpp b/src/qdoc/docparser.cpp index 61eb83b3b..d46a4bc86 100644 --- a/src/qdoc/docparser.cpp +++ b/src/qdoc/docparser.cpp @@ -802,15 +802,29 @@ void DocParser::parse(const QString &source, DocPrivate *docPrivate, case CMD_OMIT: getUntilEnd(cmd); break; - case CMD_OMITVALUE: + case CMD_OMITVALUE: { p1 = getArgument(); if (!m_private->enumItemList.contains(p1)) m_private->enumItemList.append(p1); if (!m_private->omitEnumItemList.contains(p1)) m_private->omitEnumItemList.append(p1); skipSpacesOrOneEndl(); - getRestOfLine(); + // Skip potential description paragraph + while (m_position < m_inputLength && !isBlankLine()) { + skipAllSpaces(); + if (qsizetype pos = m_position; pos < m_input.size() + && m_input.at(pos++).unicode() == '\\') { + QString nextCmdStr; + while (pos < m_input.size() && m_input[pos].isLetterOrNumber()) + nextCmdStr += m_input[pos++]; + int nextCmd = m_utilities.cmdHash.value(cmdStr, NOT_A_CMD); + if (nextCmd == cmd || nextCmd == CMD_VALUE) + break; + } + getRestOfLine(); + } break; + } case CMD_PRINTLINE: { leavePara(); QString rest = getRestOfLine(); |