diff options
Diffstat (limited to 'clang/test/SemaObjC/subclassing-restricted-attr.m')
-rw-r--r-- | clang/test/SemaObjC/subclassing-restricted-attr.m | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/clang/test/SemaObjC/subclassing-restricted-attr.m b/clang/test/SemaObjC/subclassing-restricted-attr.m new file mode 100644 index 00000000000..d0db5e452f0 --- /dev/null +++ b/clang/test/SemaObjC/subclassing-restricted-attr.m @@ -0,0 +1,36 @@ +// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s +// RUN: %clang_cc1 -x objective-c++ -fsyntax-only -verify -Wno-objc-root-class %s +// rdar://16560476 + +__attribute__((objc_subclassing_restricted)) +@interface Leaf // okay +@end + +__attribute__((objc_subclassing_restricted)) +@interface SubClassOfLeaf : Leaf // expected-note {{class is declared here}} +@end + + +@interface SubClass : SubClassOfLeaf // expected-error {{cannot subclass a class that was declared with the 'objc_subclassing_restricted' attribute}} +@end + +__attribute__((objc_root_class)) +@interface PlainRoot +@end + +__attribute__((objc_subclassing_restricted)) +@interface Sub2Class : PlainRoot // okay +@end + +// rdar://28753587 +__attribute__((objc_subclassing_restricted)) +@interface SuperImplClass // expected-note {{class is declared here}} +@end +@implementation SuperImplClass +@end + +__attribute__((objc_subclassing_restricted)) +@interface SubImplClass : SuperImplClass +@end +@implementation SubImplClass // expected-error {{cannot subclass a class that was declared with the 'objc_subclassing_restricted' attribute}} +@end |