diff options
| author | Douglas Gregor <dgregor@apple.com> | 2010-03-16 06:04:47 +0000 |
|---|---|---|
| committer | Douglas Gregor <dgregor@apple.com> | 2010-03-16 06:04:47 +0000 |
| commit | 00a0cf70d9ee5f28438d22ae0f28e4f3655bdc12 (patch) | |
| tree | afd299453ca129b0f3c46d5be21d3c387eb7740b /clang/lib | |
| parent | 7d83d9b23c8b20471c9b91e590cc3cd5270f6be9 (diff) | |
| download | bcm5719-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.cpp | 2 | ||||
| -rw-r--r-- | clang/lib/Parse/ParseObjc.cpp | 4 |
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. |

