diff options
-rw-r--r-- | lib/Parse/ParseObjc.cpp | 7 | ||||
-rw-r--r-- | test/Parser/missing-end-2.m | 19 |
2 files changed, 25 insertions, 1 deletions
diff --git a/lib/Parse/ParseObjc.cpp b/lib/Parse/ParseObjc.cpp index f54c3eef07..a8f5e222dc 100644 --- a/lib/Parse/ParseObjc.cpp +++ b/lib/Parse/ParseObjc.cpp @@ -402,7 +402,12 @@ void Parser::ParseObjCInterfaceDeclList(Decl *interfaceDecl, // Skip until we see an '@' or '}' or ';'. SkipUntil(tok::r_brace, tok::at); break; - + + case tok::objc_implementation: + Diag(Tok, diag::err_objc_missing_end); + ConsumeToken(); + break; + case tok::objc_required: case tok::objc_optional: // This is only valid on protocols. diff --git a/test/Parser/missing-end-2.m b/test/Parser/missing-end-2.m new file mode 100644 index 0000000000..63dc965583 --- /dev/null +++ b/test/Parser/missing-end-2.m @@ -0,0 +1,19 @@ +// RUN: %clang_cc1 -fsyntax-only -verify %s +// rdar: //7824372 + +@interface A +-(void) im0; + +@implementation A // expected-error {{missing @end}} +@end + +@interface B { +} + +@implementation B // expected-error {{missing @end}} +@end + +@interface C +@property int P; + +@implementation C // expected-error 2 {{missing @end}} |