diff --git a/lib/checkunusedfunctions.cpp b/lib/checkunusedfunctions.cpp index a0d2ca9d0f9..905b05f9a13 100644 --- a/lib/checkunusedfunctions.cpp +++ b/lib/checkunusedfunctions.cpp @@ -246,7 +246,7 @@ void CheckUnusedFunctions::parseTokens(const Tokenizer &tokenizer, const Setting continue; } - if (!funcname || funcname->isKeyword() || funcname->isStandardType() || funcname->varId() || funcname->enumerator()) + if (!funcname || funcname->isKeyword() || funcname->isStandardType() || funcname->varId() || funcname->enumerator() || funcname->type()) continue; // funcname ( => Assert that the end parentheses isn't followed by { diff --git a/test/testunusedfunctions.cpp b/test/testunusedfunctions.cpp index e0c5e1a5f35..f33a83cbd02 100644 --- a/test/testunusedfunctions.cpp +++ b/test/testunusedfunctions.cpp @@ -84,6 +84,7 @@ class TestUnusedFunctions : public TestFixture { TEST_CASE(includes); TEST_CASE(virtualFunc); TEST_CASE(parensInit); + TEST_CASE(typeInCast); } #define check(...) check_(__FILE__, __LINE__, __VA_ARGS__) @@ -756,6 +757,18 @@ class TestUnusedFunctions : public TestFixture { "}\n"); ASSERT_EQUALS("[test.cpp:2]: (style) The function 'url' is never used.\n", errout_str()); } + + void typeInCast() + { + check("struct S {\n" // #12901 + " void Type() {}\n" + "};\n" + "int main() {\n" + " struct Type {} t;\n" + " Type t2{ (Type)t };\n" + "}\n"); + ASSERT_EQUALS("[test.cpp:2]: (style) The function 'Type' is never used.\n", errout_str()); + } }; REGISTER_TEST(TestUnusedFunctions)