From 8c7e67d7644c3ab298bd6be724c9480da0979af6 Mon Sep 17 00:00:00 2001 From: Fariborz Jahanian Date: Thu, 25 Aug 2011 22:58:42 +0000 Subject: [PATCH] Don't warn on category implementing a method, if declated method in the class belongs to a synthesized property getter/setter. // rdar://10014946 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138598 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Sema/SemaDeclObjC.cpp | 2 +- test/SemaObjC/protocol-implementing-class-methods.m | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) 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 &InsMap, if (!WarnExactMatch) WarnConflictingTypedMethods(ImpMethodDecl, MethodDecl, isa(CDecl)); - else + else if (!MethodDecl->isSynthesized()) WarnExactTypedMethods(ImpMethodDecl, MethodDecl, isa(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 -- 2.50.1