diff options
-rw-r--r-- | lib/Sema/SemaDeclObjC.cpp | 2 | ||||
-rw-r--r-- | test/SemaObjC/protocol-implementing-class-methods.m | 13 |
2 files changed, 14 insertions, 1 deletions
diff --git a/lib/Sema/SemaDeclObjC.cpp b/lib/Sema/SemaDeclObjC.cpp index 03081bec13..af14aa4f84 100644 --- a/lib/Sema/SemaDeclObjC.cpp +++ b/lib/Sema/SemaDeclObjC.cpp @@ -1488,7 +1488,7 @@ void Sema::MatchAllMethodDeclarations(const llvm::DenseSet<Selector> &InsMap, if (!WarnExactMatch) WarnConflictingTypedMethods(ImpMethodDecl, MethodDecl, isa<ObjCProtocolDecl>(CDecl)); - else + else if (!MethodDecl->isSynthesized()) WarnExactTypedMethods(ImpMethodDecl, MethodDecl, isa<ObjCProtocolDecl>(CDecl)); } diff --git a/test/SemaObjC/protocol-implementing-class-methods.m b/test/SemaObjC/protocol-implementing-class-methods.m index 6d68e8c21c..f08a5a97d8 100644 --- a/test/SemaObjC/protocol-implementing-class-methods.m +++ b/test/SemaObjC/protocol-implementing-class-methods.m @@ -26,3 +26,16 @@ - (void) : (double) arg{}; // expected-warning {{category is implementing a method which will also be implemented by its primary class}} - (void) CEMeth {}; // expected-warning {{category is implementing a method which will also be implemented by its primary class}} @end + +// rdar://10014946 +typedef char BOOL; +@interface I +{ + BOOL allowsDeleting; +} +@property (nonatomic, assign, readwrite) BOOL allowsDeleting; +@end + +@implementation I(CAT) +- (BOOL) allowsDeleting { return 1; } +@end |