diff options
| author | Ted Kremenek <kremenek@apple.com> | 2010-10-21 18:49:42 +0000 |
|---|---|---|
| committer | Ted Kremenek <kremenek@apple.com> | 2010-10-21 18:49:42 +0000 |
| commit | 5ef9ad9907a7f8bf2a6d585f9a1872e9e9bed23e (patch) | |
| tree | 038bab4d448cb39457637db6c819f853d7e06b61 /clang/lib/Sema/SemaObjCProperty.cpp | |
| parent | 22813f4077138771460973f451631f5b9b239218 (diff) | |
| download | bcm5719-llvm-5ef9ad9907a7f8bf2a6d585f9a1872e9e9bed23e.tar.gz bcm5719-llvm-5ef9ad9907a7f8bf2a6d585f9a1872e9e9bed23e.zip | |
Tweak diagnostics for redeclaration of a @property in a class extension where the redelcaration and original
declaration have the 'readwrite' attribute. This is a common case, and we can issue a more lucid diagnostic.
Fixes <rdar://problem/7629420>.
llvm-svn: 117045
Diffstat (limited to 'clang/lib/Sema/SemaObjCProperty.cpp')
| -rw-r--r-- | clang/lib/Sema/SemaObjCProperty.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaObjCProperty.cpp b/clang/lib/Sema/SemaObjCProperty.cpp index 251af224153..1e7c1f85086 100644 --- a/clang/lib/Sema/SemaObjCProperty.cpp +++ b/clang/lib/Sema/SemaObjCProperty.cpp @@ -187,7 +187,16 @@ Sema::HandlePropertyInClassExtension(Scope *S, ObjCCategoryDecl *CDecl, PIDecl->setPropertyAttributes(ObjCPropertyDecl::OBJC_PR_copy); PIDecl->setSetterName(SetterSel); } else { - Diag(AtLoc, diag::err_use_continuation_class) + // Tailor the diagnostics for the common case where a readwrite + // property is declared both in the @interface and the continuation. + // This is a common error where the user often intended the original + // declaration to be readonly. + unsigned diag = + (Attributes & ObjCDeclSpec::DQ_PR_readwrite) && + (PIkind & ObjCPropertyDecl::OBJC_PR_readwrite) + ? diag::err_use_continuation_class_redeclaration_readwrite + : diag::err_use_continuation_class; + Diag(AtLoc, diag) << CCPrimary->getDeclName(); Diag(PIDecl->getLocation(), diag::note_property_declare); } |

