llvm-project/clang/test/Parser/missing-end-4.m
Patrick Beard acfbe9e1f2 Added a new attribute, objc_root_class, which informs the compiler when a root class is intentionally declared.
The warning this inhibits, -Wobjc-root-class, is opt-in for now. However, all clang unit tests that would trigger
the warning have been updated to use -Wno-objc-root-class. <rdar://problem/7446698>

llvm-svn: 154187
2012-04-06 18:12:22 +00:00

52 lines
1.5 KiB
Objective-C

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