Another test case for properties in protocols.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50589 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/test/Sema/objc-property-5.m b/test/Sema/objc-property-5.m
new file mode 100644
index 0000000..c467e63
--- /dev/null
+++ b/test/Sema/objc-property-5.m
@@ -0,0 +1,31 @@
+// RUN: clang -verify %s
+
+@protocol P1 @end
+@protocol P2 @end
+@protocol P3 @end
+
+@interface NSData @end
+
+@interface MutableNSData : NSData @end
+
+@interface Base : NSData <P1>
+@property(readonly) id ref;
+@property(readonly) Base *p_base;
+@property(readonly) NSData *nsdata;
+@property(readonly) NSData * m_nsdata;
+@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'}}
+@end
+
+@interface  MutedData: Data
+@property(readonly) id p_base; // expected-warning {{property type 'id' does not match property type inherited from 'Data'}}
+@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'}}
+@end
+