diff options
author | Steve Naroff <snaroff@apple.com> | 2008-10-21 14:15:04 +0000 |
---|---|---|
committer | Steve Naroff <snaroff@apple.com> | 2008-10-21 14:15:04 +0000 |
commit | 90255b4f546ad47dc5074cbee7749a948e2f1cb2 (patch) | |
tree | 1f68433f442755d848f7c09ee7be7e5c1cd7234a | |
parent | e020fa1b854414c9622ed857a663091863a0cf11 (diff) | |
download | bcm5719-llvm-90255b4f546ad47dc5074cbee7749a948e2f1cb2.tar.gz bcm5719-llvm-90255b4f546ad47dc5074cbee7749a948e2f1cb2.zip |
Fix a crasher during error recovery in Parser::ParseObjCTypeName().
Found this while fixing another unrelated radar.
llvm-svn: 57904
-rw-r--r-- | clang/lib/Parse/ParseObjc.cpp | 3 | ||||
-rw-r--r-- | clang/test/SemaObjC/invalid-typename.m | 12 |
2 files changed, 14 insertions, 1 deletions
diff --git a/clang/lib/Parse/ParseObjc.cpp b/clang/lib/Parse/ParseObjc.cpp index 10ac42718e4..8487ea2338f 100644 --- a/clang/lib/Parse/ParseObjc.cpp +++ b/clang/lib/Parse/ParseObjc.cpp @@ -635,7 +635,8 @@ Parser::TypeTy *Parser::ParseObjCTypeName(ObjCDeclSpec &DS) { MatchRHSPunctuation(tok::r_paren, LParenLoc); } } - RParenLoc = ConsumeParen(); + if (Tok.is(tok::r_paren)) + RParenLoc = ConsumeParen(); return Ty; } diff --git a/clang/test/SemaObjC/invalid-typename.m b/clang/test/SemaObjC/invalid-typename.m new file mode 100644 index 00000000000..9996789e212 --- /dev/null +++ b/clang/test/SemaObjC/invalid-typename.m @@ -0,0 +1,12 @@ +// RUN: clang -fsyntax-only -verify %s + +@class NSString, NSArray; + +@protocol ISyncSessionCallback +- (oneway void)clientWithId:(bycopy NSString *)clientId + canBeginSyncingPlanWithId:(bycopy NSString *)planId + syncModes:(bycopy NSArray /* ISDSyncState */ *)syncModes + entities:(bycopy NSArray /* ISDEntity */ *)entities + truthPullers:(bycopy NSDictionary /* NSString -> [NSString] */ *)truthPullers; // expected-error{{expected ')'}} expected-error{{to match this '('}} +@end + |