diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2014-08-08 22:33:24 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2014-08-08 22:33:24 +0000 |
commit | 0b1d28866c369422c7be0c817ea9b9b7e0cfa12c (patch) | |
tree | 8f52f92b07f4e5af58019a145a00612c9d687d4c /clang/lib/Sema/SemaExprObjC.cpp | |
parent | 674ef1d7d3960641b73aa23143426ffcc0416f20 (diff) | |
download | bcm5719-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.cpp | 12 |
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) |