forked from OSchip/llvm-project
ObjectiveC migrator. Refactor last patch on
annotations. (was r189892). llvm-svn: 189956
This commit is contained in:
parent
bb556156a4
commit
8b10230f54
|
@ -1090,11 +1090,12 @@ void ObjCMigrateASTConsumer::migrateAddMethodAnnotation(
|
||||||
(MethodDecl->param_begin() == MethodDecl->param_end()))
|
(MethodDecl->param_begin() == MethodDecl->param_end()))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
bool ReturnCFAudited = false;
|
|
||||||
if (!MethodIsReturnAnnotated) {
|
if (!MethodIsReturnAnnotated) {
|
||||||
RetEffect Ret = CE.getReturnValue();
|
RetEffect Ret = CE.getReturnValue();
|
||||||
if (Ret.getObjKind() == RetEffect::CF && (Ret.isOwned() || Ret.notOwned()))
|
if (Ret.getObjKind() == RetEffect::CF && (Ret.isOwned() || Ret.notOwned())) {
|
||||||
ReturnCFAudited = true;
|
AddCFAnnotations(Ctx, CE, MethodDecl, false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
else if (!AuditedType(MethodDecl->getResultType()))
|
else if (!AuditedType(MethodDecl->getResultType()))
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1103,26 +1104,16 @@ void ObjCMigrateASTConsumer::migrateAddMethodAnnotation(
|
||||||
// Now, how about argument types.
|
// Now, how about argument types.
|
||||||
llvm::ArrayRef<ArgEffect> AEArgs = CE.getArgs();
|
llvm::ArrayRef<ArgEffect> AEArgs = CE.getArgs();
|
||||||
unsigned i = 0;
|
unsigned i = 0;
|
||||||
bool ArgCFAudited = false;
|
|
||||||
for (ObjCMethodDecl::param_const_iterator pi = MethodDecl->param_begin(),
|
for (ObjCMethodDecl::param_const_iterator pi = MethodDecl->param_begin(),
|
||||||
pe = MethodDecl->param_end(); pi != pe; ++pi, ++i) {
|
pe = MethodDecl->param_end(); pi != pe; ++pi, ++i) {
|
||||||
const ParmVarDecl *pd = *pi;
|
const ParmVarDecl *pd = *pi;
|
||||||
ArgEffect AE = AEArgs[i];
|
ArgEffect AE = AEArgs[i];
|
||||||
if (AE == DecRef /*CFConsumed annotated*/ || AE == IncRef) {
|
if ((AE == DecRef && !pd->getAttr<CFConsumedAttr>()) || AE == IncRef ||
|
||||||
if ((AE == DecRef && !pd->getAttr<CFConsumedAttr>()) ||
|
!AuditedType(pd->getType())) {
|
||||||
AE == IncRef)
|
AddCFAnnotations(Ctx, CE, MethodDecl, MethodIsReturnAnnotated);
|
||||||
ArgCFAudited = true;
|
return;
|
||||||
}
|
|
||||||
else {
|
|
||||||
QualType AT = pd->getType();
|
|
||||||
if (!AuditedType(AT)) {
|
|
||||||
AddCFAnnotations(Ctx, CE, MethodDecl, MethodIsReturnAnnotated);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (ReturnCFAudited || ArgCFAudited)
|
|
||||||
AddCFAnnotations(Ctx, CE, MethodDecl, MethodIsReturnAnnotated);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue