]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/Parser/objc-recover.mm
Vendor import of clang release_38 branch r258549:
[FreeBSD/FreeBSD.git] / test / Parser / objc-recover.mm
1 // RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
2
3 @interface StopAtAtEnd
4 // This used to eat the @end
5 int 123 // expected-error{{expected unqualified-id}}
6 @end
7
8 @implementation StopAtAtEnd // no-warning
9 int 123 // expected-error{{expected unqualified-id}}
10 @end
11
12
13 @interface StopAtMethodDecls
14 // This used to eat the method declarations
15 int 123 // expected-error{{expected unqualified-id}}
16 - (void)foo; // expected-note{{here}}
17 int 456 // expected-error{{expected unqualified-id}}
18 + (void)bar; // expected-note{{here}}
19 @end
20
21 @implementation StopAtMethodDecls
22 int 123 // expected-error{{expected unqualified-id}}
23 - (id)foo {} // expected-warning{{conflicting return type}}
24 int 456 // expected-error{{expected unqualified-id}}
25 + (id)bar {} // expected-warning{{conflicting return type}}
26 @end
27
28
29 @interface EmbeddedNamespace
30 // This used to cause an infinite loop.
31 namespace NS { // expected-error{{expected unqualified-id}}
32 }
33 - (id)test; // expected-note{{here}}
34 @end
35
36 @implementation EmbeddedNamespace
37 int 123 // expected-error{{expected unqualified-id}}
38 // We should still stop here and parse this namespace.
39 namespace NS {
40   void foo();
41 }
42
43 // Make sure the declaration of -test was recognized.
44 - (void)test { // expected-warning{{conflicting return type}}
45   // Make sure the declaration of NS::foo was recognized.
46   NS::foo();
47 }
48
49 @end
50
51
52 @protocol ProtocolWithEmbeddedNamespace
53 namespace NS { // expected-error{{expected unqualified-id}}
54
55 }
56 - (void)PWEN_foo; // expected-note{{here}}
57 @end
58
59 @interface ImplementPWEN <ProtocolWithEmbeddedNamespace>
60 @end
61
62 @implementation ImplementPWEN
63 - (id)PWEN_foo {} // expected-warning{{conflicting return type}}
64 @end