From f64930b7f5f69786908a6c9e6ac358b57a94dea2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Fri, 22 Jan 2016 19:22:24 +0100 Subject: [PATCH] Fixed #7343 (SymbolDatabase: handling of override) --- lib/symboldatabase.cpp | 1 + test/testsymboldatabase.cpp | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/lib/symboldatabase.cpp b/lib/symboldatabase.cpp index a714e891a..aa66d13cb 100644 --- a/lib/symboldatabase.cpp +++ b/lib/symboldatabase.cpp @@ -1334,6 +1334,7 @@ bool SymbolDatabase::isFunction(const Token *tok, const Scope* outerScope, const (tok2->isUpperCaseName() && Token::Match(tok2, "%name% (") && tok2->next()->link()->strAt(1) == "{") || Token::Match(tok2, ": ::| %name% (|::|<|{") || Token::Match(tok2, "const| &|&&| ;|{") || + Token::Match(tok2, "const| override ;|{") || Token::Match(tok2, "= delete|default ;") || Token::Match(tok2, "const| noexcept {|:|;|=") || (Token::Match(tok2, "const| noexcept|throw (") && diff --git a/test/testsymboldatabase.cpp b/test/testsymboldatabase.cpp index 644917fce..430a348a4 100644 --- a/test/testsymboldatabase.cpp +++ b/test/testsymboldatabase.cpp @@ -236,6 +236,7 @@ private: TEST_CASE(symboldatabase51); // #6538 TEST_CASE(symboldatabase52); // #6581 TEST_CASE(symboldatabase53); // #7124 (library podtype) + TEST_CASE(symboldatabase54); // #7257 TEST_CASE(isImplicitlyVirtual); TEST_CASE(isPure); @@ -2207,6 +2208,20 @@ private: } } + void symboldatabase54() { // #7343 + GET_SYMBOL_DB("class A {\n" + " void getReg() const override {\n" + " assert(Kind == k_ShiftExtend);\n" + " }\n" + "};"); + + ASSERT(db != nullptr); + if (db) { + ASSERT_EQUALS(1U, db->functionScopes.size()); + ASSERT_EQUALS("getReg", db->functionScopes.front()->className); + } + } + void isImplicitlyVirtual() { { GET_SYMBOL_DB("class Base {\n"