diff --git a/lib/tokenize.cpp b/lib/tokenize.cpp index 984269d07e8..193fa5bbb4d 100644 --- a/lib/tokenize.cpp +++ b/lib/tokenize.cpp @@ -2890,7 +2890,7 @@ static const Token* skipConstVolatileBackwards(const Token* tok) { bool Tokenizer::simplifyUsing() { - if (!isCPP() || mSettings.standards.cpp < Standards::CPP11) + if (!isCPP()) return false; // simplify using N::x; to using x = N::x; diff --git a/test/testsimplifyusing.cpp b/test/testsimplifyusing.cpp index 8eba2142913..58af4c972bc 100644 --- a/test/testsimplifyusing.cpp +++ b/test/testsimplifyusing.cpp @@ -75,6 +75,7 @@ class TestSimplifyUsing : public TestFixture { TEST_CASE(simplifyUsing36); TEST_CASE(simplifyUsing37); TEST_CASE(simplifyUsing38); + TEST_CASE(simplifyUsing39); TEST_CASE(simplifyUsing8970); TEST_CASE(simplifyUsing8971); @@ -106,12 +107,14 @@ class TestSimplifyUsing : public TestFixture { Platform::Type type = Platform::Type::Native; bool debugwarnings = true; bool preprocess = false; + Standards::cppstd_t cppstd = Standards::CPPLatest; }; #define tok(...) tok_(__FILE__, __LINE__, __VA_ARGS__) template std::string tok_(const char* file, int line, const char (&code)[size], const TokOptions& options = make_default_obj()) { - const Settings settings = settingsBuilder(settings0).certainty(Certainty::inconclusive).debugwarnings(options.debugwarnings).platform(options.type).build(); + const Settings settings = settingsBuilder(settings0).certainty(Certainty::inconclusive).debugwarnings(options.debugwarnings) + .platform(options.type).cpp(options.cppstd).build(); if (options.preprocess) { SimpleTokenizer2 tokenizer(settings, *this, code, "test.cpp"); @@ -925,6 +928,16 @@ class TestSimplifyUsing : public TestFixture { ASSERT_EQUALS("", errout_str()); } + void simplifyUsing39() { + const char code[] = "using std::wstring;\n" // #14578 + "std::wstring ws;"; + const char expected[] = "std :: wstring ws ;"; + ASSERT_EQUALS(expected, tok(code)); + ASSERT_EQUALS("", errout_str()); + ASSERT_EQUALS(expected, tok(code, dinit(TokOptions, $.cppstd = Standards::CPP03))); + ASSERT_EQUALS("", errout_str()); + } + void simplifyUsing8970() { const char code[] = "using V = std::vector;\n" "struct A {\n"