|  | // 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 |