summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaExprObjC.cpp
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2014-08-08 22:33:24 +0000
committerFariborz Jahanian <fjahanian@apple.com>2014-08-08 22:33:24 +0000
commit0b1d28866c369422c7be0c817ea9b9b7e0cfa12c (patch)
tree8f52f92b07f4e5af58019a145a00612c9d687d4c /clang/lib/Sema/SemaExprObjC.cpp
parent674ef1d7d3960641b73aa23143426ffcc0416f20 (diff)
downloadbcm5719-llvm-0b1d28866c369422c7be0c817ea9b9b7e0cfa12c.tar.gz
bcm5719-llvm-0b1d28866c369422c7be0c817ea9b9b7e0cfa12c.zip
Objective-C [qoi]. Issue warning and fixit if property-dot syntax
use mis-cased property name (which is currently accepted silently due to the way property setters are named). rdar://17911746 llvm-svn: 215250
Diffstat (limited to 'clang/lib/Sema/SemaExprObjC.cpp')
-rw-r--r--clang/lib/Sema/SemaExprObjC.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaExprObjC.cpp b/clang/lib/Sema/SemaExprObjC.cpp
index bed9c2f16d4..8ec2c177f72 100644
--- a/clang/lib/Sema/SemaExprObjC.cpp
+++ b/clang/lib/Sema/SemaExprObjC.cpp
@@ -1700,6 +1700,18 @@ HandleExprPropertyRefExpr(const ObjCObjectPointerType *OPT,
if (Setter && DiagnoseUseOfDecl(Setter, MemberLoc))
return ExprError();
+ // Special warning if member name used in a property-dot for a setter accessor
+ // does not use a property with same name; e.g. obj.X = ... for a property with
+ // name 'x'.
+ if (Setter && Setter->isImplicit() && Setter->isPropertyAccessor()
+ && !IFace->FindPropertyDeclaration(Member)) {
+ if (const ObjCPropertyDecl *PDecl = Setter->findPropertyDecl())
+ Diag(MemberLoc,
+ diag::warn_property_access_suggest)
+ << MemberName << QualType(OPT, 0) << PDecl->getName()
+ << FixItHint::CreateReplacement(MemberLoc, PDecl->getName());
+ }
+
if (Getter || Setter) {
if (Super)
return new (Context)
OpenPOWER on IntegriCloud