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)