| // RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s |
| |
| @interface X1 |
| @end |
| @implementation X1 // expected-note {{implementation started here}} |
| @interface Y1 // expected-error {{missing '@end'}} |
| @end |
| @end // expected-error {{'@end' must appear in an Objective-C context}} |
| |
| @interface X2 |
| @end |
| @implementation X2 // expected-note {{implementation started here}} |
| @protocol Y2 // expected-error {{missing '@end'}} |
| @end |
| @end // expected-error {{'@end' must appear in an Objective-C context}} |
| |
| @interface X6 // expected-note {{class started here}} |
| @interface X7 // expected-error {{missing '@end'}} |
| @end |
| @end // expected-error {{'@end' must appear in an Objective-C context}} |
| |
| @protocol P1 // expected-note {{protocol started here}} |
| @interface P2 // expected-error {{missing '@end'}} |
| @end |
| @end // expected-error {{'@end' must appear in an Objective-C context}} |
| |
| @interface X4 // expected-note {{class started here}} |
| @implementation X4 // expected-error {{missing '@end'}} |
| @end |
| @end // expected-error {{'@end' must appear in an Objective-C context}} |
| |
| @interface I |
| @end |
| @implementation I |
| @protocol P; // forward declarations of protocols in @implementations is allowed |
| @class C; // forward declarations of classes in @implementations is allowed |
| - (C<P>*) MyMeth {} |
| @end |
| |
| @interface I2 {} |
| @protocol P2; // expected-error {{illegal interface qualifier}} |
| @class C2; // expected-error {{illegal interface qualifier}} |
| @end |
| |
| @interface I3 |
| @end |
| @implementation I3 |
| - Meth {} |
| + Cls {} |
| @protocol P3; |
| @end |