diff options
author | John McCall <rjmccall@apple.com> | 2011-03-26 01:53:26 +0000 |
---|---|---|
committer | John McCall <rjmccall@apple.com> | 2011-03-26 01:53:26 +0000 |
commit | 405988b97c0e8916dfedbca507f30eb8ede83112 (patch) | |
tree | 0bfcc9ca65afdd18e28b399f41c60ca802e0205c | |
parent | 9db0212bc724889e8a06196ae16190acf2af54a9 (diff) | |
download | bcm5719-llvm-405988b97c0e8916dfedbca507f30eb8ede83112.tar.gz bcm5719-llvm-405988b97c0e8916dfedbca507f30eb8ede83112.zip |
Fix the recovery from missing semis on @property declarations to not consume
the following '@'. Conceivably, we could skip tokens until something that
can validly start an @interface declaration here, but it's not clear that
it matters.
llvm-svn: 128325
-rw-r--r-- | clang/lib/Parse/ParseObjc.cpp | 3 | ||||
-rw-r--r-- | clang/test/Parser/recovery.m | 5 |
2 files changed, 6 insertions, 2 deletions
diff --git a/clang/lib/Parse/ParseObjc.cpp b/clang/lib/Parse/ParseObjc.cpp index 14f2bbedbe2..d17e517b1f0 100644 --- a/clang/lib/Parse/ParseObjc.cpp +++ b/clang/lib/Parse/ParseObjc.cpp @@ -442,8 +442,7 @@ void Parser::ParseObjCInterfaceDeclList(Decl *interfaceDecl, DeclSpec DS(AttrFactory); ParseStructDeclaration(DS, Callback); - ExpectAndConsume(tok::semi, diag::err_expected_semi_decl_list, "", - tok::at); + ExpectAndConsume(tok::semi, diag::err_expected_semi_decl_list); break; } } diff --git a/clang/test/Parser/recovery.m b/clang/test/Parser/recovery.m new file mode 100644 index 00000000000..e1265262b1b --- /dev/null +++ b/clang/test/Parser/recovery.m @@ -0,0 +1,5 @@ +// RUN: %clang_cc1 -fsyntax-only -verify -pedantic -fblocks %s + +@interface Test0 +@property (assign) id x // expected-error {{expected ';' at end of declaration list}} +@end |