From 420cc1ce0d0b1f157073f092459155c777bb7cff Mon Sep 17 00:00:00 2001 From: chrchr-github Date: Tue, 16 Jul 2024 21:26:55 +0200 Subject: [PATCH] Fix #12583 debug: valueFlowBailoutIncompleteVar reported for "using namespace" declaration --- lib/symboldatabase.cpp | 14 ++++++++++---- test/testsymboldatabase.cpp | 8 ++++++++ 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/lib/symboldatabase.cpp b/lib/symboldatabase.cpp index 40c18bdbff6..cc9cec5ce4f 100644 --- a/lib/symboldatabase.cpp +++ b/lib/symboldatabase.cpp @@ -1460,10 +1460,16 @@ void SymbolDatabase::createSymbolDatabaseIncompleteVars() tok = tok->link(); continue; } - if (tok->isCpp() && (Token::Match(tok, "catch|typeid (") || - Token::Match(tok, "static_cast|dynamic_cast|const_cast|reinterpret_cast"))) { - tok = tok->linkAt(1); - continue; + if (tok->isCpp()) { + if (Token::Match(tok, "catch|typeid (") || + Token::Match(tok, "static_cast|dynamic_cast|const_cast|reinterpret_cast")) { + tok = tok->linkAt(1); + continue; + } + if (tok->str() == "using") { + tok = Token::findsimplematch(tok, ";"); + continue; + } } if (tok->str() == "NULL") continue; diff --git a/test/testsymboldatabase.cpp b/test/testsymboldatabase.cpp index 50346041a10..082eda73141 100644 --- a/test/testsymboldatabase.cpp +++ b/test/testsymboldatabase.cpp @@ -5894,6 +5894,14 @@ class TestSymbolDatabase : public TestFixture { const Token* s = Token::findsimplematch(tokenizer.tokens(), "string"); ASSERT(s && !s->isIncompleteVar()); } + { + GET_SYMBOL_DB("void f() {\n" // #12583 + " using namespace N;\n" + "}\n"); + ASSERT(db && errout_str().empty()); + const Token* N = Token::findsimplematch(tokenizer.tokens(), "N"); + ASSERT(N && !N->isIncompleteVar()); + } } void enum1() {