Objective-C [qoi]: Provide improved parse diagnostics when

closing rbrace is missing in an ObjC class declaration.
Can do beter than this, but it involves addition of
overhead which will be present in correct code.
// rdar://6854840

llvm-svn: 177435
This commit is contained in:
Fariborz Jahanian 2013-03-19 20:27:40 +00:00
parent 559754a482
commit 1c5d4c54a9
3 changed files with 12 additions and 0 deletions

View File

@ -406,6 +406,8 @@ def err_missing_catch_finally : Error<
def err_objc_concat_string : Error<"unexpected token after Objective-C string">;
def err_expected_objc_container : Error<
"'@end' must appear in an Objective-C context">;
def err_objc_unexpected_atend : Error<
"'@end' appears where closing brace '}' is expected">;
def error_property_ivar_decl : Error<
"property synthesize requires specification of an ivar">;
def err_synthesized_property_name : Error<

View File

@ -1288,6 +1288,10 @@ void Parser::ParseObjCClassInstanceVariables(Decl *interfaceDecl,
visibility = Tok.getObjCKeywordID();
ConsumeToken();
continue;
case tok::objc_end:
Diag(Tok, diag::err_objc_unexpected_atend);
ConsumeToken();
continue;
default:
Diag(Tok, diag::err_objc_illegal_visibility_spec);
continue;

View File

@ -0,0 +1,6 @@
// RUN: %clang_cc1 -fsyntax-only -verify %s
// rdar: //6854840
@interface A {@end // expected-error {{'@end' appears where closing brace '}' is expected}}\
// expected-note {{to match this '{'}}\
// expected-note {{class started here}}
// expected-error {{expected '}'}} expected-error {{missing '@end'}}