From 46d545e355a4fea2a201652c3c8bbf22a13187a6 Mon Sep 17 00:00:00 2001 From: Fariborz Jahanian Date: Tue, 2 Nov 2010 00:44:43 +0000 Subject: [PATCH] Diagnose a coherant message when @interface does not terminate with @end. // rdar: //7824372 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117991 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Parse/ParseObjc.cpp | 7 ++++++- test/Parser/missing-end-2.m | 19 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 test/Parser/missing-end-2.m 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}} -- 2.40.0