diff options
-rw-r--r-- | src/libs/3rdparty/cplusplus/Lexer.cpp | 2 | ||||
-rw-r--r-- | tests/auto/cplusplus/cxx11/data/userDefinedLiterals.1.cpp | 2 | ||||
-rw-r--r-- | tests/auto/cplusplus/lexer/tst_lexer.cpp | 2 |
3 files changed, 4 insertions, 2 deletions
diff --git a/src/libs/3rdparty/cplusplus/Lexer.cpp b/src/libs/3rdparty/cplusplus/Lexer.cpp index dc24f5e96c..89e0ce512d 100644 --- a/src/libs/3rdparty/cplusplus/Lexer.cpp +++ b/src/libs/3rdparty/cplusplus/Lexer.cpp @@ -939,7 +939,7 @@ bool Lexer::scanOptionalIntegerSuffix(bool allowU) void Lexer::scanOptionalUserDefinedLiteral(Token *tok) { - if (_languageFeatures.cxx11Enabled && _yychar == '_') { + if (_languageFeatures.cxx11Enabled && (_yychar == '_' || std::isalpha(_yychar))) { tok->f.userDefinedLiteral = true; while (std::isalnum(_yychar) || _yychar == '_' || isByteOfMultiByteCodePoint(_yychar)) yyinp(); diff --git a/tests/auto/cplusplus/cxx11/data/userDefinedLiterals.1.cpp b/tests/auto/cplusplus/cxx11/data/userDefinedLiterals.1.cpp index f194b3ed51..6352a82a28 100644 --- a/tests/auto/cplusplus/cxx11/data/userDefinedLiterals.1.cpp +++ b/tests/auto/cplusplus/cxx11/data/userDefinedLiterals.1.cpp @@ -3,5 +3,5 @@ constexpr long double operator"" _inv(long double value) { } int main() { auto foo = operator"" _inv(2.3); - return 12_km + 0.5_Pa + 'c'_X + "abd"_L + u"xyz"_M; + return 12_km + 0.5_Pa + 'c'_X + "abd"_L + u"xyz"_M + 10ms; } diff --git a/tests/auto/cplusplus/lexer/tst_lexer.cpp b/tests/auto/cplusplus/lexer/tst_lexer.cpp index 79548e6fd4..90a36c510c 100644 --- a/tests/auto/cplusplus/lexer/tst_lexer.cpp +++ b/tests/auto/cplusplus/lexer/tst_lexer.cpp @@ -619,6 +619,8 @@ void tst_SimpleLexer::user_defined_literals_data() << _("11_udl") << createToken(T_NUMERIC_LITERAL, 6, 6, true); QTest::newRow("numeric user-defined literal with decimal part") << _("11.1_udl") << createToken(T_NUMERIC_LITERAL, 8, 8, true); + QTest::newRow("numeric user-defined reserved literal") + << _("11ms") << createToken(T_NUMERIC_LITERAL, 4, 4, true); } static Token createToken(unsigned kind, unsigned byteOffset, unsigned bytes, |