summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2010-03-16 06:04:47 +0000
committerDouglas Gregor <dgregor@apple.com>2010-03-16 06:04:47 +0000
commit00a0cf70d9ee5f28438d22ae0f28e4f3655bdc12 (patch)
treeafd299453ca129b0f3c46d5be21d3c387eb7740b /clang/lib
parent7d83d9b23c8b20471c9b91e590cc3cd5270f6be9 (diff)
downloadbcm5719-llvm-00a0cf70d9ee5f28438d22ae0f28e4f3655bdc12.tar.gz
bcm5719-llvm-00a0cf70d9ee5f28438d22ae0f28e4f3655bdc12.zip
Don't consume tokens past the end-of-file in an @interface. Fixes
<rdar://problem/7735566>. llvm-svn: 98613
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/Frontend/CompilerInstance.cpp2
-rw-r--r--clang/lib/Parse/ParseObjc.cpp4
2 files changed, 6 insertions, 0 deletions
diff --git a/clang/lib/Frontend/CompilerInstance.cpp b/clang/lib/Frontend/CompilerInstance.cpp
index c43118ce56b..3bc56619296 100644
--- a/clang/lib/Frontend/CompilerInstance.cpp
+++ b/clang/lib/Frontend/CompilerInstance.cpp
@@ -294,6 +294,8 @@ void CompilerInstance::createCodeCompletionConsumer() {
getFrontendOpts().DebugCodeCompletionPrinter,
getFrontendOpts().ShowMacrosInCodeCompletion,
llvm::outs()));
+ if (!CompletionConsumer)
+ return;
if (CompletionConsumer->isOutputBinary() &&
llvm::sys::Program::ChangeStdoutToBinary()) {
diff --git a/clang/lib/Parse/ParseObjc.cpp b/clang/lib/Parse/ParseObjc.cpp
index 7ab0e71dc23..7b2b6e855bb 100644
--- a/clang/lib/Parse/ParseObjc.cpp
+++ b/clang/lib/Parse/ParseObjc.cpp
@@ -375,6 +375,10 @@ void Parser::ParseObjCInterfaceDeclList(DeclPtrTy interfaceDecl,
AtEnd.setBegin(AtLoc);
AtEnd.setEnd(Tok.getLocation());
break;
+ } else if (DirectiveKind == tok::objc_not_keyword) {
+ Diag(Tok, diag::err_objc_unknown_at);
+ SkipUntil(tok::semi);
+ continue;
}
// Eat the identifier.
OpenPOWER on IntegriCloud