From fd311e3c7231aaf45273512720f38e108ff8cf64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Fri, 25 Sep 2009 20:42:22 +0200 Subject: [PATCH] Fixed #678 (False positive: Unused private function produced by inner class) --- src/checkclass.cpp | 7 +++++++ test/testunusedprivfunc.cpp | 19 +++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/src/checkclass.cpp b/src/checkclass.cpp index c752965d2..b2f3ded3d 100644 --- a/src/checkclass.cpp +++ b/src/checkclass.cpp @@ -541,6 +541,13 @@ void CheckClass::privateFunctions() FuncList.push_back(tok); } } + + /** @todo embedded class have access to private functions */ + if (tok->str() == "class") + { + FuncList.clear(); + break; + } } // Check that all private functions are used.. diff --git a/test/testunusedprivfunc.cpp b/test/testunusedprivfunc.cpp index 709f3a6ec..5b5e0ce10 100644 --- a/test/testunusedprivfunc.cpp +++ b/test/testunusedprivfunc.cpp @@ -266,6 +266,25 @@ private: " { }\n" "};\n"); ASSERT_EQUALS("", errout.str()); + + check("class A\n" + "{\n" + "public:\n" + " A()\n" + " { }\n" + "\n" + "private:\n" + " void f()\n" + " { }\n" + "\n" + " class B\n" + " {\n" + " public:\n" + " B(A *a)\n" + " { a->f(); }\n" + " };\n" + "};\n"); + ASSERT_EQUALS("", errout.str()); }