diff --git a/lib/checkunusedvar.cpp b/lib/checkunusedvar.cpp index 161a309c6..101c886fe 100644 --- a/lib/checkunusedvar.cpp +++ b/lib/checkunusedvar.cpp @@ -1630,9 +1630,6 @@ bool CheckUnusedVar::isRecordTypeWithoutSideEffects(const Type* type) bool CheckUnusedVar::isVariableWithoutSideEffects(const Variable& var) { - if (var.isPointer()) - return true; - const Type* variableType = var.type(); if (variableType) { if (!isRecordTypeWithoutSideEffects(variableType)) diff --git a/test/testunusedvar.cpp b/test/testunusedvar.cpp index 82fc3a114..1c4cb62de 100644 --- a/test/testunusedvar.cpp +++ b/test/testunusedvar.cpp @@ -459,6 +459,20 @@ private: "}"); TODO_ASSERT_EQUALS("error", "", errout.str()); + // constructor with hidden definition + functionVariableUsage( + "class B {\n" + "public:\n" + " B();\n" + "};\n" + "class A {\n" + " B* b = new B;\n" + "};\n" + "int main() {\n" + " A a;\n" + "}"); + TODO_ASSERT_EQUALS("error", "", errout.str()); + // side-effect variable functionVariableUsage( "class F {\n"