diff options
Diffstat (limited to 'clang/test/SemaObjC/class-property-inheritance.m')
-rw-r--r-- | clang/test/SemaObjC/class-property-inheritance.m | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/clang/test/SemaObjC/class-property-inheritance.m b/clang/test/SemaObjC/class-property-inheritance.m new file mode 100644 index 000000000000..9d8a4fe44053 --- /dev/null +++ b/clang/test/SemaObjC/class-property-inheritance.m @@ -0,0 +1,39 @@ +// RUN: %clang_cc1 -fsyntax-only -verify %s + +@class MyObject; + + +@interface TopClassWithClassProperty0 +@property(nullable, readonly, strong, class) MyObject *foo; +@end + +@interface SubClassWithClassProperty0 : TopClassWithClassProperty0 +@property(nonnull, readonly, copy, class) MyObject *foo; // expected-warning {{'copy' attribute on property 'foo' does not match the property inherited from 'TopClassWithClassProperty0'}} +@end + + + +@interface TopClassWithInstanceProperty1 +@property(nullable, readonly, strong) MyObject *foo; +@end + +@interface ClassWithClassProperty1 : TopClassWithInstanceProperty1 +@property(nonnull, readonly, copy, class) MyObject *foo; // no-warning +@end + +@interface SubClassWithInstanceProperty1 : ClassWithClassProperty1 +@property(nullable, readonly, copy) MyObject *foo; // expected-warning {{'copy' attribute on property 'foo' does not match the property inherited from 'TopClassWithInstanceProperty1'}} +@end + + +@interface TopClassWithClassProperty2 +@property(nullable, readonly, strong, class) MyObject *foo; +@end + +@interface ClassWithInstanceProperty2 : TopClassWithClassProperty2 +@property(nonnull, readonly, copy) MyObject *foo; // no-warning +@end + +@interface SubClassWithClassProperty2 : ClassWithInstanceProperty2 +@property(nonnull, readonly, copy, class) MyObject *foo; // expected-warning {{'copy' attribute on property 'foo' does not match the property inherited from 'TopClassWithClassProperty2'}} +@end |