1// RUN: %clang_cc1 -fsyntax-only -verify %s 2// rdar://7884086 3 4@interface NSObject @end 5 6@protocol TopProtocol 7 @property (readonly) id myString; // expected-note {{property}} 8@end 9 10@protocol SubProtocol <TopProtocol> 11@end 12 13@interface TopClass : NSObject <TopProtocol> {} 14@end 15 16@interface SubClass : TopClass <SubProtocol> {} 17@end 18 19@interface SubClass1 : TopClass {} 20@end 21 22@implementation SubClass1 @end // Test1 - No Warning 23 24@implementation TopClass // expected-warning {{property 'myString' requires method 'myString' to be defined}} 25@end 26 27@implementation SubClass // Test3 - No Warning 28@end 29 30@interface SubClass2 : TopClass<TopProtocol> 31@end 32 33@implementation SubClass2 @end // Test 4 - No Warning 34 35@interface SubClass3 : TopClass<SubProtocol> @end 36@implementation SubClass3 @end // Test 5 - No Warning 37 38@interface SubClass4 : SubClass3 @end 39@implementation SubClass4 @end // Test 5 - No Warning 40 41@protocol NewProtocol 42 @property (readonly) id myNewString; // expected-note {{property}} 43@end 44 45@interface SubClass5 : SubClass4 <NewProtocol> @end 46@implementation SubClass5 @end // expected-warning {{property 'myNewString' requires method 'myNewString' to be defined}} 47 48 49// Radar 8035776 50@protocol SuperProtocol 51@end 52 53@interface Super <SuperProtocol> 54@end 55 56@protocol ProtocolWithProperty <SuperProtocol> 57@property (readonly, assign) id invalidationBacktrace; // expected-note {{property}} 58@end 59 60@interface INTF : Super <ProtocolWithProperty> 61@end 62 63@implementation INTF @end // expected-warning{{property 'invalidationBacktrace' requires method 'invalidationBacktrace' to be defined}} 64