Properly skip IBOutlets when checking for unused ivars.
Refine the error message of unused ivars.
Added test case.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53957 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Analysis/CheckObjCUnusedIVars.cpp b/lib/Analysis/CheckObjCUnusedIVars.cpp
index d074dde..d536ea4 100644
--- a/lib/Analysis/CheckObjCUnusedIVars.cpp
+++ b/lib/Analysis/CheckObjCUnusedIVars.cpp
@@ -57,8 +57,9 @@
// Ignore ivars that aren't private.
if (ID->getAccessControl() != ObjCIvarDecl::Private)
continue;
-
- if (ID->getAttr<IBOutletAttr>() == 0)
+
+ // Skip IB Outlets.
+ if (ID->getAttr<IBOutletAttr>())
continue;
M[ID] = Unused;
@@ -77,8 +78,9 @@
if (I->second == Unused) {
std::ostringstream os;
- os << "Private ivar '" << I->first->getName() << "' is never used.";
-
+ os << "Instance variable '" << I->first->getName()
+ << "' in class '" << ID->getName() << "' is never used.";
+
BR.EmitBasicReport("unused ivar",
os.str().c_str(), I->first->getLocation());
}