@interface NOW : I
@property (readonly) id d1; // expected-warning {{attribute 'readonly' of property 'd1' restricts attribute 'readwrite' of property inherited from 'I'}} expected-warning {{property 'd1' 'copy' attribute does not match the property inherited from 'I'}}
-@property (readwrite, copy) I* d2; // expected-warning {{property type 'I *' does not match property type inherited from 'I'}}
+@property (readwrite, copy) I* d2;
@end
@end
@interface Data : Base <P1, P2>
-@property(readonly) NSData *ref; // expected-warning {{property type 'NSData *' does not match property type inherited from 'Base'}}
-@property(readonly) Data *p_base; // expected-warning {{property type 'Data *' does not match property type inherited from 'Base'}}
-@property(readonly) MutableNSData * m_nsdata; // expected-warning {{property type 'MutableNSData *' does not match property type inherited from 'Base'}}
+@property(readonly) NSData *ref;
+@property(readonly) Data *p_base;
+@property(readonly) MutableNSData * m_nsdata;
@end
@interface MutedData: Data
-@property(readonly) id p_base; // expected-warning {{property type 'id' does not match property type inherited from 'Data'}}
+@property(readonly) id p_base;
@end
@interface ConstData : Data <P1, P2, P3>
-@property(readonly) ConstData *p_base; // expected-warning {{property type 'ConstData *' does not match property type inherited from 'Data'}}
+@property(readonly) ConstData *p_base;
@end
void foo(Base *b, id x) {