forked from OSchip/llvm-project
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:
parent
7186f20a1b
commit
a2ca03a908
|
@ -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);
|
||||
|
|
|
@ -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'}}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue