summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/libs/3rdparty/cplusplus/Lexer.cpp2
-rw-r--r--tests/auto/cplusplus/cxx11/data/userDefinedLiterals.1.cpp2
-rw-r--r--tests/auto/cplusplus/lexer/tst_lexer.cpp2
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,