summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn McCall <rjmccall@apple.com>2011-03-26 01:53:26 +0000
committerJohn McCall <rjmccall@apple.com>2011-03-26 01:53:26 +0000
commit405988b97c0e8916dfedbca507f30eb8ede83112 (patch)
tree0bfcc9ca65afdd18e28b399f41c60ca802e0205c
parent9db0212bc724889e8a06196ae16190acf2af54a9 (diff)
downloadbcm5719-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.cpp3
-rw-r--r--clang/test/Parser/recovery.m5
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
OpenPOWER on IntegriCloud