if we already know that a decl is invalid in an @catch, don't verify its type.

llvm-svn: 68925
This commit is contained in:
Chris Lattner 2009-04-12 23:26:56 +00:00
parent 7186f20a1b
commit a2ca03a908
2 changed files with 6 additions and 3 deletions

View File

@ -1031,6 +1031,10 @@ Sema::ActOnObjCAtCatchStmt(SourceLocation AtLoc,
// PVD == 0 implies @catch(...).
if (PVD) {
// If we already know the decl is invalid, reject it.
if (PVD->isInvalidDecl())
return StmtError();
if (!Context.isObjCObjectPointerType(PVD->getType()))
return StmtError(Diag(PVD->getLocation(),
diag::err_catch_param_not_objc_type));
@ -1038,7 +1042,7 @@ Sema::ActOnObjCAtCatchStmt(SourceLocation AtLoc,
return StmtError(Diag(PVD->getLocation(),
diag::err_illegal_qualifiers_on_catch_parm));
}
ObjCAtCatchStmt *CS = new (Context) ObjCAtCatchStmt(AtLoc, RParen,
PVD, static_cast<Stmt*>(Body.release()), CatchList);
return Owned(CatchList ? CatchList : CS);

View File

@ -4,8 +4,7 @@
void f0(id x) {
@try {
} @catch (NSException *x) { // \
expected-error{{unknown type name 'NSException'}} \
expected-error{{@catch parameter is not a pointer to an interface type}}
expected-error{{unknown type name 'NSException'}}
}
}