From 0597c50a4740f87f54cda1a53766d325ce4e0fbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Thu, 26 Aug 2010 22:05:45 +0200 Subject: [PATCH] Fixed #1966 (False positive: Unused private function (virtual function in base class)) --- lib/checkclass.cpp | 2 +- test/testunusedprivfunc.cpp | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/lib/checkclass.cpp b/lib/checkclass.cpp index 8fbbd3d15..5dc72cda0 100644 --- a/lib/checkclass.cpp +++ b/lib/checkclass.cpp @@ -1075,7 +1075,7 @@ void CheckClass::privateFunctions() if (!_settings->_checkCodingStyle) return; - const char pattern_class[] = "class|struct %var% {|:"; + const char pattern_class[] = "class|struct %var% {"; // Locate some class for (const Token *tok1 = Token::findmatch(_tokenizer->tokens(), pattern_class); diff --git a/test/testunusedprivfunc.cpp b/test/testunusedprivfunc.cpp index 65f627c40..5f7ad8024 100644 --- a/test/testunusedprivfunc.cpp +++ b/test/testunusedprivfunc.cpp @@ -50,6 +50,8 @@ private: TEST_CASE(classInClass); TEST_CASE(sameFunctionNames); TEST_CASE(incompleteImplementation); + + TEST_CASE(derivedClass); // skip warning for derived classes. It might be a virtual function. } @@ -359,6 +361,19 @@ private: "void A::b() { }\n"); ASSERT_EQUALS("", errout.str()); } + + void derivedClass() + { + // skip warning in derived classes in case the function is virtual + check("class derived : public base\n" + "{\n" + "public:\n" + " derived() : base() { }\n" + "private:\n" + " void f();\n" + "};\n"); + ASSERT_EQUALS("", errout.str()); + } }; REGISTER_TEST(TestUnusedPrivateFunction)