[Sema] Fix an assert when objc_externally_retained was applied to an unprototyped function
rdar://58893199
This commit is contained in:
parent
f668baa459
commit
2e4f5e629d
|
@ -6561,7 +6561,9 @@ static void handleObjCExternallyRetainedAttr(Sema &S, Decl *D,
|
|||
|
||||
// If D is a function-like declaration (method, block, or function), then we
|
||||
// make every parameter psuedo-strong.
|
||||
for (unsigned I = 0, E = getFunctionOrMethodNumParams(D); I != E; ++I) {
|
||||
unsigned NumParams =
|
||||
hasFunctionProto(D) ? getFunctionOrMethodNumParams(D) : 0;
|
||||
for (unsigned I = 0; I != NumParams; ++I) {
|
||||
auto *PVD = const_cast<ParmVarDecl *>(getFunctionOrMethodParam(D, I));
|
||||
QualType Ty = PVD->getType();
|
||||
|
||||
|
|
|
@ -118,3 +118,6 @@ void test13(ObjCTy *first, __weak ObjCTy *second, __unsafe_unretained ObjCTy *th
|
|||
}
|
||||
|
||||
#pragma clang attribute ext_ret.pop
|
||||
|
||||
__attribute__((objc_externally_retained))
|
||||
void unprototyped();
|
||||
|
|
Loading…
Reference in a new issue