summaryrefslogtreecommitdiff
path: root/src/linguist
diff options
context:
space:
mode:
authorAndy Shaw <andy.shaw@qt.io>2023-02-20 14:47:20 +0100
committerJoerg Bornemann <joerg.bornemann@qt.io>2023-03-28 15:09:16 +0000
commita1b46788b7d2bf0117dbf63f4b4fedbc4a91eeb8 (patch)
tree59d3271b0a0c328a99bd52c04421e7115ed8ab8c /src/linguist
parent34397930803f3d4648b868186cee2e6a593181cd (diff)
downloadqttools-a1b46788b7d2bf0117dbf63f4b4fedbc4a91eeb8.tar.gz
Don't treat enum classes as a normal class
The enum class construct can only be based on an integral type so they can be skipped over safely. Pick-to: 6.5 Task-number: QTBUG-36589 Change-Id: I9a7dd7508f80002e9e46429de726a75607d21a54 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Diffstat (limited to 'src/linguist')
-rw-r--r--src/linguist/lupdate/cpp.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/linguist/lupdate/cpp.cpp b/src/linguist/lupdate/cpp.cpp
index cc56f2d5d..7779bd99e 100644
--- a/src/linguist/lupdate/cpp.cpp
+++ b/src/linguist/lupdate/cpp.cpp
@@ -98,7 +98,7 @@ private:
};
enum TokenType {
- Tok_Eof, Tok_class, Tok_friend, Tok_namespace, Tok_using, Tok_return,
+ Tok_Eof, Tok_class, Tok_enum, Tok_friend, Tok_namespace, Tok_using, Tok_return,
Tok_Q_OBJECT, Tok_Access, Tok_Cancel,
Tok_Ident, Tok_String, Tok_RawString, Tok_Arrow, Tok_Colon, Tok_ColonColon,
Tok_Equals, Tok_LeftBracket, Tok_RightBracket, Tok_QuestionMark,
@@ -337,6 +337,7 @@ CppParser::TokenType CppParser::lookAheadToSemicolonOrLeftBrace()
static const QString strQ_OBJECT = u"Q_OBJECT"_s;
static const QString strclass = u"class"_s;
+static const QString strenum = u"enum"_s;
static const QString strfinal = u"final"_s;
static const QString strfriend = u"friend"_s;
static const QString strnamespace = u"namespace"_s;
@@ -580,6 +581,10 @@ CppParser::TokenType CppParser::getToken()
if (yyWord == strclass)
return Tok_class;
break;
+ case 'e':
+ if (yyWord == strenum)
+ return Tok_enum;
+ break;
case 'f':
if (yyWord == strfriend)
return Tok_friend;
@@ -2064,6 +2069,12 @@ void CppParser::parseInternal(ConversionData &cd, const QStringList &includeStac
}
yyTok = getToken();
break;
+ case Tok_enum:
+ yyTok = getToken();
+ // If it is an enum class then ignore
+ if (yyTok == Tok_class)
+ yyTok = getToken();
+ break;
default:
if (!yyParenDepth)
prospectiveContext.clear();