diff --git a/lib/tokenize.cpp b/lib/tokenize.cpp index 116eaa7d255..4766fd9bce7 100644 --- a/lib/tokenize.cpp +++ b/lib/tokenize.cpp @@ -2689,6 +2689,9 @@ namespace { return false; } + if (tok1->tokAt(-1)->tokType() == Token::eType || tok1->tokAt(-1)->tokType() == Token::eName) + return false; + if (Token::Match(tok1->tokAt(-1), "class|struct|union|enum|namespace")) { // fixme return false; diff --git a/test/testsimplifyusing.cpp b/test/testsimplifyusing.cpp index c020b99b5dd..918453543b7 100644 --- a/test/testsimplifyusing.cpp +++ b/test/testsimplifyusing.cpp @@ -74,6 +74,7 @@ class TestSimplifyUsing : public TestFixture { TEST_CASE(simplifyUsing35); TEST_CASE(simplifyUsing36); TEST_CASE(simplifyUsing37); + TEST_CASE(simplifyUsing38); TEST_CASE(simplifyUsing8970); TEST_CASE(simplifyUsing8971); @@ -908,6 +909,16 @@ class TestSimplifyUsing : public TestFixture { ASSERT_EQUALS("", errout_str()); } + void simplifyUsing38() { + const char code[] = "using std::begin;\n" // #14424 + "using std::end;\n" + "Unknown begin;\n" + "int end;\n"; + const char expected[] = "Unknown begin ; int end ;"; + ASSERT_EQUALS(expected, tok(code)); + ASSERT_EQUALS("", errout_str()); + } + void simplifyUsing8970() { const char code[] = "using V = std::vector;\n" "struct A {\n"