|  | // RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s | 
|  |  | 
|  | @interface StopAtAtEnd | 
|  | // This used to eat the @end | 
|  | int 123 // expected-error{{expected unqualified-id}} | 
|  | @end | 
|  |  | 
|  | @implementation StopAtAtEnd // no-warning | 
|  | int 123 // expected-error{{expected unqualified-id}} | 
|  | @end | 
|  |  | 
|  |  | 
|  | @interface StopAtMethodDecls | 
|  | // This used to eat the method declarations | 
|  | int 123 // expected-error{{expected unqualified-id}} | 
|  | - (void)foo; // expected-note{{here}} | 
|  | int 456 // expected-error{{expected unqualified-id}} | 
|  | + (void)bar; // expected-note{{here}} | 
|  | @end | 
|  |  | 
|  | @implementation StopAtMethodDecls | 
|  | int 123 // expected-error{{expected unqualified-id}} | 
|  | - (id)foo {} // expected-warning{{conflicting return type}} | 
|  | int 456 // expected-error{{expected unqualified-id}} | 
|  | + (id)bar {} // expected-warning{{conflicting return type}} | 
|  | @end | 
|  |  | 
|  |  | 
|  | @interface EmbeddedNamespace | 
|  | // This used to cause an infinite loop. | 
|  | namespace NS { // expected-error{{expected unqualified-id}} | 
|  | } | 
|  | - (id)test; // expected-note{{here}} | 
|  | @end | 
|  |  | 
|  | @implementation EmbeddedNamespace | 
|  | int 123 // expected-error{{expected unqualified-id}} | 
|  | // We should still stop here and parse this namespace. | 
|  | namespace NS { | 
|  | void foo(); | 
|  | } | 
|  |  | 
|  | // Make sure the declaration of -test was recognized. | 
|  | - (void)test { // expected-warning{{conflicting return type}} | 
|  | // Make sure the declaration of NS::foo was recognized. | 
|  | NS::foo(); | 
|  | } | 
|  |  | 
|  | @end | 
|  |  | 
|  |  | 
|  | @protocol ProtocolWithEmbeddedNamespace | 
|  | namespace NS { // expected-error{{expected unqualified-id}} | 
|  |  | 
|  | } | 
|  | - (void)PWEN_foo; // expected-note{{here}} | 
|  | @end | 
|  |  | 
|  | @interface ImplementPWEN <ProtocolWithEmbeddedNamespace> | 
|  | @end | 
|  |  | 
|  | @implementation ImplementPWEN | 
|  | - (id)PWEN_foo {} // expected-warning{{conflicting return type}} | 
|  | @end |