From 6304a4dddb1265e1e595114b4239b9c9c5558124 Mon Sep 17 00:00:00 2001 From: Dmitry-Me Date: Fri, 25 Sep 2015 13:57:11 +0300 Subject: [PATCH] Fix FP for members of temporaries --- lib/checkunusedvar.cpp | 5 +++++ test/testunusedvar.cpp | 15 +++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/lib/checkunusedvar.cpp b/lib/checkunusedvar.cpp index 76371f860..b8b6e2e0d 100644 --- a/lib/checkunusedvar.cpp +++ b/lib/checkunusedvar.cpp @@ -1265,6 +1265,11 @@ void CheckUnusedVar::checkStructMemberUsage() used = true; break; } + const Function* function = structVarTok->function(); + if (function && function->retType && function->retType->name() == structname) { + used = true; + break; + } } if (!used) { diff --git a/test/testunusedvar.cpp b/test/testunusedvar.cpp index b6c5fefc0..5040e8881 100644 --- a/test/testunusedvar.cpp +++ b/test/testunusedvar.cpp @@ -250,6 +250,21 @@ private: " a->a;\n" "}"); ASSERT_EQUALS("[test.cpp:7]: (style) struct member 'B::a' is never used.\n", errout.str()); + + checkStructMemberUsage("struct A\n" + "{\n" + " int a;\n" + "};\n" + "struct B\n" + "{\n" + " int a;\n" + "};\n" + "A& bar();\n" + "void foo()\n" + "{\n" + " bar().a;\n" + "}"); + ASSERT_EQUALS("[test.cpp:7]: (style) struct member 'B::a' is never used.\n", errout.str()); } void structmember2() {