diff options
-rw-r--r-- | clang/lib/Parse/ParseObjc.cpp | 7 | ||||
-rw-r--r-- | clang/test/Parser/missing-end-2.m | 19 |
2 files changed, 25 insertions, 1 deletions
diff --git a/clang/lib/Parse/ParseObjc.cpp b/clang/lib/Parse/ParseObjc.cpp index f54c3eef079..a8f5e222dc8 100644 --- a/clang/lib/Parse/ParseObjc.cpp +++ b/clang/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/clang/test/Parser/missing-end-2.m b/clang/test/Parser/missing-end-2.m new file mode 100644 index 00000000000..63dc9655836 --- /dev/null +++ b/clang/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}} |