llvm-project
51 строка · 1.5 Кб
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 {} // expected-note {{class started here}}
41@protocol P2; // expected-error {{missing '@end'}}
42@class C2;
43@end // expected-error {{'@end' must appear in an Objective-C context}}
44
45@interface I3
46@end
47@implementation I3
48- Meth {}
49+ Cls {}
50@protocol P3;
51@end
52