r197128 - Add more test cases for 'objc_protocol_requires_explicit_implementation'.

Ted Kremenek kremenek at apple.com
Wed Dec 11 22:20:42 PST 2013


Author: kremenek
Date: Thu Dec 12 00:20:42 2013
New Revision: 197128

URL: http://llvm.org/viewvc/llvm-project?rev=197128&view=rev
Log:
Add more test cases for 'objc_protocol_requires_explicit_implementation'.

Modified:
    cfe/trunk/test/SemaObjC/protocols-suppress-conformance.m

Modified: cfe/trunk/test/SemaObjC/protocols-suppress-conformance.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaObjC/protocols-suppress-conformance.m?rev=197128&r1=197127&r2=197128&view=diff
==============================================================================
--- cfe/trunk/test/SemaObjC/protocols-suppress-conformance.m (original)
+++ cfe/trunk/test/SemaObjC/protocols-suppress-conformance.m Thu Dec 12 00:20:42 2013
@@ -24,6 +24,25 @@ __attribute__((objc_protocol_requires_ex
 @implementation ClassB // expected-warning {{method 'theBestOfTimes' in protocol not implemented}}
 @end
 
+// Test that inherited protocols do not get the explicit conformance requirement.
+ at protocol Inherited
+- (void) fairIsFoul;
+ at end
+
+__attribute__((objc_protocol_requires_explicit_implementation))
+ at protocol Derived <Inherited>
+- (void) foulIsFair; // expected-note {{method 'foulIsFair' declared here}}
+ at end
+
+ at interface ClassC <Inherited>
+ at end
+
+ at interface ClassD : ClassC <Derived> // expected-note {{required for direct or indirect protocol 'Derived'}}
+ at end
+
+ at implementation ClassD // expected-warning {{method 'foulIsFair' in protocol not implemented}}
+ at 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





More information about the cfe-commits mailing list