forked from qt-creator/qt-creator
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>
This commit is contained in:
committed by
André Hartmann
parent
2ae36b9e26
commit
2df71c5798
4
src/libs/3rdparty/cplusplus/Lexer.cpp
vendored
4
src/libs/3rdparty/cplusplus/Lexer.cpp
vendored
@@ -926,11 +926,15 @@ bool Lexer::scanOptionalIntegerSuffix(bool allowU)
|
|||||||
yyinp();
|
yyinp();
|
||||||
if (_yychar == 'l')
|
if (_yychar == 'l')
|
||||||
yyinp();
|
yyinp();
|
||||||
|
if (_yychar == 'u' || _yychar == 'U')
|
||||||
|
yyinp();
|
||||||
return true;
|
return true;
|
||||||
case 'L':
|
case 'L':
|
||||||
yyinp();
|
yyinp();
|
||||||
if (_yychar == 'L')
|
if (_yychar == 'L')
|
||||||
yyinp();
|
yyinp();
|
||||||
|
if (_yychar == 'u' || _yychar == 'U')
|
||||||
|
yyinp();
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
|
@@ -363,6 +363,50 @@ void tst_SimpleLexer::literals_data()
|
|||||||
;
|
;
|
||||||
QTest::newRow("microsoft-suffix") << source << expectedTokenKindList;
|
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 =
|
source =
|
||||||
"R\"(raw text)\"\n"
|
"R\"(raw text)\"\n"
|
||||||
"R\"delimiter(raw text)delimiter\"\n"
|
"R\"delimiter(raw text)delimiter\"\n"
|
||||||
|
Reference in New Issue
Block a user