diff options
author | Andre Hartmann <aha_1980@gmx.de> | 2021-04-17 18:15:31 +0200 |
---|---|---|
committer | André Hartmann <aha_1980@gmx.de> | 2021-04-19 09:16:55 +0000 |
commit | 2df71c579813f2c8c8a52941d8ec0208b32c9d5c (patch) | |
tree | 5dde368d49490e9ce8b1f1289ad963d0114e9579 | |
parent | 2ae36b9e265452eae4fd3a67253fe33a6e78e95e (diff) |
Lexer: Support the integer suffixes LU and LLU also
Before we only supported UL and ULL.
And add tests for all variants of allowed integer suffixes.
Fixes: QTCREATORBUG-25604
Change-Id: Id92f371d2effa7456d2d50891a6c29810c5c4c75
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
-rw-r--r-- | src/libs/3rdparty/cplusplus/Lexer.cpp | 4 | ||||
-rw-r--r-- | tests/auto/cplusplus/lexer/tst_lexer.cpp | 44 |
2 files changed, 48 insertions, 0 deletions
diff --git a/src/libs/3rdparty/cplusplus/Lexer.cpp b/src/libs/3rdparty/cplusplus/Lexer.cpp index e0fee4feac9..1d814845fec 100644 --- a/src/libs/3rdparty/cplusplus/Lexer.cpp +++ b/src/libs/3rdparty/cplusplus/Lexer.cpp @@ -926,11 +926,15 @@ bool Lexer::scanOptionalIntegerSuffix(bool allowU) yyinp(); if (_yychar == 'l') yyinp(); + if (_yychar == 'u' || _yychar == 'U') + yyinp(); return true; case 'L': yyinp(); if (_yychar == 'L') yyinp(); + if (_yychar == 'u' || _yychar == 'U') + yyinp(); return true; default: return false; diff --git a/tests/auto/cplusplus/lexer/tst_lexer.cpp b/tests/auto/cplusplus/lexer/tst_lexer.cpp index 90a36c510ca..fee14648e6e 100644 --- a/tests/auto/cplusplus/lexer/tst_lexer.cpp +++ b/tests/auto/cplusplus/lexer/tst_lexer.cpp @@ -364,6 +364,50 @@ void tst_SimpleLexer::literals_data() QTest::newRow("microsoft-suffix") << source << expectedTokenKindList; source = + "42u\n" + "43U\n" + "44ul\n" + "45UL\n" + "46uL\n" + "47Ul\n" + "48ull\n" + "49ULL\n" + "50uLL\n" + "51Ull\n" + "52l\n" + "53L\n" + "54ll\n" + "55LL\n" + "56lu\n" + "57LU\n" + "58lU\n" + "59Lu\n" + "60llu\n" + "61llU\n" + "62LLU\n" + "63LLu\n" + "64lL\n" // wrong + "65Ll\n" // wrong + "66luu\n" // wrong + "67LUU\n" // wrong + "68lul\n" // wrong + "69LUL\n" // wrong + ; + expectedTokenKindList = + TokenKindList() << T_NUMERIC_LITERAL << T_NUMERIC_LITERAL << T_NUMERIC_LITERAL + << T_NUMERIC_LITERAL << T_NUMERIC_LITERAL << T_NUMERIC_LITERAL + << T_NUMERIC_LITERAL << T_NUMERIC_LITERAL << T_NUMERIC_LITERAL + << T_NUMERIC_LITERAL << T_NUMERIC_LITERAL << T_NUMERIC_LITERAL + << T_NUMERIC_LITERAL << T_NUMERIC_LITERAL << T_NUMERIC_LITERAL + << T_NUMERIC_LITERAL << T_NUMERIC_LITERAL << T_NUMERIC_LITERAL + << T_NUMERIC_LITERAL << T_NUMERIC_LITERAL << T_NUMERIC_LITERAL + << T_NUMERIC_LITERAL + << T_ERROR << T_ERROR << T_ERROR + << T_ERROR << T_ERROR << T_ERROR + ; + QTest::newRow("integer-suffix") << source << expectedTokenKindList; + + source = "R\"(raw text)\"\n" "R\"delimiter(raw text)delimiter\"\n" "R\"delimiter(\nraw text line1\nraw text line2\n)delimiter\"\n" |