You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.6 KiB
65 lines
1.6 KiB
4 months ago
|
// 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
|