summaryrefslogtreecommitdiff
path: root/src/qdoc/docparser.cpp
diff options
context:
space:
mode:
authorTopi Reinio <topi.reinio@qt.io>2021-05-10 23:17:59 +0200
committerTopi Reinio <topi.reinio@qt.io>2021-05-12 11:08:05 +0200
commitc3f59a2a7dc81622ab3fde30a5b8409f423426d0 (patch)
treef6a6bc1936d95b5f96e44744b573600f4b312d6f /src/qdoc/docparser.cpp
parent5d5fd7de6ecc21d3a642e1e55c5282b60a08fc6b (diff)
downloadqttools-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.cpp18
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();