From 223ceeb97fac9c500ab9962e08b8f4600421ff8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Sun, 20 Oct 2019 18:12:52 +0200 Subject: [PATCH] SymbolDatabase: Do not set constructor flag for function in namespace --- lib/symboldatabase.cpp | 2 +- test/testsymboldatabase.cpp | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/symboldatabase.cpp b/lib/symboldatabase.cpp index d7dc00c23..126034e48 100644 --- a/lib/symboldatabase.cpp +++ b/lib/symboldatabase.cpp @@ -1892,7 +1892,7 @@ Function::Function(const Tokenizer *mTokenizer, } // class constructor/destructor - else if (tokenDef->str() == scope->className) { + else if (tokenDef->str() == scope->className && scope->type != Scope::ScopeType::eNamespace) { // destructor if (tokenDef->previous()->str() == "~") type = Function::eDestructor; diff --git a/test/testsymboldatabase.cpp b/test/testsymboldatabase.cpp index 5b9e266ed..99791c271 100644 --- a/test/testsymboldatabase.cpp +++ b/test/testsymboldatabase.cpp @@ -304,6 +304,7 @@ private: TEST_CASE(symboldatabase79); // #9392 TEST_CASE(symboldatabase80); // #9389 TEST_CASE(symboldatabase81); // #9411 + TEST_CASE(symboldatabase82); TEST_CASE(createSymbolDatabaseFindAllScopes1); @@ -4406,6 +4407,12 @@ private: } } + void symboldatabase82() { + GET_SYMBOL_DB("namespace foo { void foo() {} }"); + ASSERT(db->functionScopes.size() == 1); + ASSERT_EQUALS(false, db->functionScopes[0]->function->isConstructor()); + } + void createSymbolDatabaseFindAllScopes1() { GET_SYMBOL_DB("void f() { union {int x; char *p;} a={0}; }"); ASSERT(db->scopeList.size() == 3);