1 | // RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s |
2 | |
3 | @interface X1 |
4 | @end |
5 | @implementation X1 // expected-note {{implementation started here}} |
6 | @interface Y1 // expected-error {{missing '@end'}} |
7 | @end |
8 | @end // expected-error {{'@end' must appear in an Objective-C context}} |
9 | |
10 | @interface X2 |
11 | @end |
12 | @implementation X2 // expected-note {{implementation started here}} |
13 | @protocol Y2 // expected-error {{missing '@end'}} |
14 | @end |
15 | @end // expected-error {{'@end' must appear in an Objective-C context}} |
16 | |
17 | @interface X6 // expected-note {{class started here}} |
18 | @interface X7 // expected-error {{missing '@end'}} |
19 | @end |
20 | @end // expected-error {{'@end' must appear in an Objective-C context}} |
21 | |
22 | @protocol P1 // expected-note {{protocol started here}} |
23 | @interface P2 // expected-error {{missing '@end'}} |
24 | @end |
25 | @end // expected-error {{'@end' must appear in an Objective-C context}} |
26 | |
27 | @interface X4 // expected-note {{class started here}} |
28 | @implementation X4 // expected-error {{missing '@end'}} |
29 | @end |
30 | @end // expected-error {{'@end' must appear in an Objective-C context}} |
31 | |
32 | @interface I |
33 | @end |
34 | @implementation I |
35 | @protocol P; // forward declarations of protocols in @implementations is allowed |
36 | @class C; // forward declarations of classes in @implementations is allowed |
37 | - (C<P>*) MyMeth {} |
38 | @end |
39 | |
40 | @interface I2 {} |
41 | @protocol P2; // expected-error {{illegal interface qualifier}} |
42 | @class C2; // expected-error {{illegal interface qualifier}} |
43 | @end |
44 | |
45 | @interface I3 |
46 | @end |
47 | @implementation I3 |
48 | - Meth {} |
49 | + Cls {} |
50 | @protocol P3; |
51 | @end |
52 | |