Home | History | Annotate | Download | only in SemaObjC
      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