From 959caa559f32bd345e2b1e0ef65e67dd955da175 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludvig=20Gunne=20Lindstr=C3=B6m?= Date: Fri, 3 Jan 2025 16:03:18 +0100 Subject: [PATCH 1/3] add test --- test/testtokenize.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/test/testtokenize.cpp b/test/testtokenize.cpp index 85208b6fabe..a7adab84609 100644 --- a/test/testtokenize.cpp +++ b/test/testtokenize.cpp @@ -78,6 +78,7 @@ class TestTokenizer : public TestFixture { TEST_CASE(tokenize37); // #8550 TEST_CASE(tokenize38); // #9569 TEST_CASE(tokenize39); // #9771 + TEST_CASE(tokenize40); // #13181 TEST_CASE(validate); @@ -826,6 +827,17 @@ class TestTokenizer : public TestFixture { ASSERT_EQUALS(exp, tokenizeAndStringify(code)); } + void tokenize40() { // #13181 + const char code[] = "struct A { double eps(double); };\n" + "A operator " "_a(long double);\n" + "void f() {\n" + " double d = 1.23;\n" + " if (d == 1.2_a .eps(.1)) {}\n" + "}\n"; + (void) tokenizeAndStringify(code); + ASSERT_EQUALS("", errout_str()); + } + void validate() { // C++ code in C file ASSERT_THROW_INTERNAL(tokenizeAndStringify(";using namespace std;",false,Platform::Type::Native,false), SYNTAX); From 4c8b2a52e896b0d652a05d2b82b73b0975bbc878 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludvig=20Gunne=20Lindstr=C3=B6m?= Date: Fri, 3 Jan 2025 15:36:45 +0100 Subject: [PATCH 2/3] fix #13181 --- lib/token.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/token.cpp b/lib/token.cpp index 4be1a973981..55ac12ad9ce 100644 --- a/lib/token.cpp +++ b/lib/token.cpp @@ -126,7 +126,7 @@ void Token::update_property_info() else if (mTokType != eVariable && mTokType != eFunction && mTokType != eType && mTokType != eKeyword) tokType(eName); } else if (simplecpp::Token::isNumberLike(mStr)) { - if (MathLib::isInt(mStr) || MathLib::isFloat(mStr)) + if ((MathLib::isInt(mStr) || MathLib::isFloat(mStr)) && mStr.find('_') == std::string::npos) tokType(eNumber); else tokType(eName); // assume it is a user defined literal From d10e5a492e25978ba3b358020b497169413333f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludvig=20Gunne=20Lindstr=C3=B6m?= Date: Fri, 3 Jan 2025 22:17:18 +0100 Subject: [PATCH 3/3] fix test code --- test/testtokenize.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/testtokenize.cpp b/test/testtokenize.cpp index a7adab84609..bbebf933723 100644 --- a/test/testtokenize.cpp +++ b/test/testtokenize.cpp @@ -829,7 +829,7 @@ class TestTokenizer : public TestFixture { void tokenize40() { // #13181 const char code[] = "struct A { double eps(double); };\n" - "A operator " "_a(long double);\n" + "A operator \"\"_a(long double);\n" "void f() {\n" " double d = 1.23;\n" " if (d == 1.2_a .eps(.1)) {}\n"