summaryrefslogtreecommitdiffstats
path: root/clang/test/Parser
diff options
context:
space:
mode:
authorErik Verbruggen <erikjv@me.com>2011-12-08 09:58:43 +0000
committerErik Verbruggen <erikjv@me.com>2011-12-08 09:58:43 +0000
commitf988785dc038af057ba52a93cb4a67294bcb0b2b (patch)
treed424cdced7b5cb25a1b56b4e8ff0abcb8e26d113 /clang/test/Parser
parent311084734de4b9b0fe3e0a32506fad26c119abe1 (diff)
downloadbcm5719-llvm-f988785dc038af057ba52a93cb4a67294bcb0b2b.tar.gz
bcm5719-llvm-f988785dc038af057ba52a93cb4a67294bcb0b2b.zip
Fix: allow @protocol forward declarations inside @implementation-s.
llvm-svn: 146147
Diffstat (limited to 'clang/test/Parser')
-rw-r--r--clang/test/Parser/missing-end-4.m51
1 files changed, 51 insertions, 0 deletions
diff --git a/clang/test/Parser/missing-end-4.m b/clang/test/Parser/missing-end-4.m
new file mode 100644
index 00000000000..e98cef45e9f
--- /dev/null
+++ b/clang/test/Parser/missing-end-4.m
@@ -0,0 +1,51 @@
+// RUN: %clang_cc1 -fsyntax-only -verify %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
OpenPOWER on IntegriCloud