37 lines
1.1 KiB
Mathematica
37 lines
1.1 KiB
Mathematica
|
// 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
|