summaryrefslogtreecommitdiffstats
path: root/src/tools
diff options
context:
space:
mode:
authorMartin Smith <martin.smith@digia.com>2015-04-23 12:29:09 +0200
committerMartin Smith <martin.smith@digia.com>2015-04-23 13:58:06 +0000
commit74f28ef1ca3be73dba4e8157729bab4cae40385d (patch)
tree38e2dae9626d8fe14fb209cf866099857e10666e /src/tools
parentdc5719a7c505f2c588116f5f56d1ad14bf9556a7 (diff)
qdoc: Now parses enum values containing commas
qdoc can now parse enum values in the enum declaration where the enum value contains a comma. See, for example, thise values in QSysInfo::MacVersion: MV_IOS_4_3 = Q_MV_IOS(4, 3), MV_IOS_5_0 = Q_MV_IOS(5, 0), MV_IOS_5_1 = Q_MV_IOS(5, 1), MV_IOS_6_0 = Q_MV_IOS(6, 0), MV_IOS_6_1 = Q_MV_IOS(6, 1), MV_IOS_7_0 = Q_MV_IOS(7, 0), MV_IOS_7_1 = Q_MV_IOS(7, 1), MV_IOS_8_0 = Q_MV_IOS(8, 0) Change-Id: Idd7da89330efc0e9fa428a99b0090969ea1d97d9 Task-number: QTBUG-45758 Reviewed-by: Venugopal Shivashankar <venugopal.shivashankar@digia.com>
Diffstat (limited to 'src/tools')
-rw-r--r--src/tools/qdoc/cppcodeparser.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/tools/qdoc/cppcodeparser.cpp b/src/tools/qdoc/cppcodeparser.cpp
index b088031d9d..552fb6a4ba 100644
--- a/src/tools/qdoc/cppcodeparser.cpp
+++ b/src/tools/qdoc/cppcodeparser.cpp
@@ -1781,10 +1781,18 @@ bool CppCodeParser::matchEnumItem(Aggregate *parent, EnumNode *enume)
QString name = previousLexeme();
CodeChunk val;
+ int parenLevel = 0;
if (match(Tok_Equal)) {
- while (tok != Tok_Comma && tok != Tok_RightBrace &&
- tok != Tok_Eoi) {
+ while (tok != Tok_RightBrace && tok != Tok_Eoi) {
+ if (tok == Tok_LeftParen)
+ parenLevel++;
+ else if (tok == Tok_RightParen)
+ parenLevel--;
+ else if (tok == Tok_Comma) {
+ if (parenLevel <= 0)
+ break;
+ }
val.append(lexeme());
readToken();
}