From: Ted Kremenek Date: Thu, 12 Dec 2013 06:20:42 +0000 (+0000) Subject: Add more test cases for 'objc_protocol_requires_explicit_implementation'. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3a4fa76f9e69f1c97ff13572120bd9d2081c1890;p=clang Add more test cases for 'objc_protocol_requires_explicit_implementation'. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@197128 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/test/SemaObjC/protocols-suppress-conformance.m b/test/SemaObjC/protocols-suppress-conformance.m index 3d6537015c..3349f7f90a 100644 --- a/test/SemaObjC/protocols-suppress-conformance.m +++ b/test/SemaObjC/protocols-suppress-conformance.m @@ -24,6 +24,25 @@ __attribute__((objc_protocol_requires_explicit_implementation)) @implementation ClassB // expected-warning {{method 'theBestOfTimes' in protocol not implemented}} @end +// Test that inherited protocols do not get the explicit conformance requirement. +@protocol Inherited +- (void) fairIsFoul; +@end + +__attribute__((objc_protocol_requires_explicit_implementation)) +@protocol Derived +- (void) foulIsFair; // expected-note {{method 'foulIsFair' declared here}} +@end + +@interface ClassC +@end + +@interface ClassD : ClassC // expected-note {{required for direct or indirect protocol 'Derived'}} +@end + +@implementation ClassD // expected-warning {{method 'foulIsFair' in protocol not implemented}} +@end + // Test that the attribute is used correctly. __attribute__((objc_protocol_requires_explicit_implementation(1+2))) // expected-error {{attribute takes no arguments}} @protocol AnotherProtocol @end