forked from OSchip/llvm-project
[objcmt] Make sure we don't edit the return type to add 'instancetype' if the return type is already that.
rdar://16961577 llvm-svn: 209264
This commit is contained in:
parent
dc3e9c75fe
commit
c02a0dbe41
|
@ -830,8 +830,12 @@ bool ObjCMigrateASTConsumer::migrateNSEnumDecl(ASTContext &Ctx,
|
|||
return Res;
|
||||
}
|
||||
|
||||
static void ReplaceWithInstancetype(const ObjCMigrateASTConsumer &ASTC,
|
||||
static void ReplaceWithInstancetype(ASTContext &Ctx,
|
||||
const ObjCMigrateASTConsumer &ASTC,
|
||||
ObjCMethodDecl *OM) {
|
||||
if (OM->getReturnType() == Ctx.getObjCInstanceType())
|
||||
return; // already has instancetype.
|
||||
|
||||
SourceRange R;
|
||||
std::string ClassString;
|
||||
if (TypeSourceInfo *TSInfo = OM->getReturnTypeSourceInfo()) {
|
||||
|
@ -893,7 +897,7 @@ void ObjCMigrateASTConsumer::migrateMethodInstanceType(ASTContext &Ctx,
|
|||
return;
|
||||
case OIT_Init:
|
||||
if (OM->getReturnType()->isObjCIdType())
|
||||
ReplaceWithInstancetype(*this, OM);
|
||||
ReplaceWithInstancetype(Ctx, *this, OM);
|
||||
return;
|
||||
case OIT_ReturnsSelf:
|
||||
migrateFactoryMethod(Ctx, CDecl, OM, OIT_ReturnsSelf);
|
||||
|
@ -914,7 +918,7 @@ void ObjCMigrateASTConsumer::migrateMethodInstanceType(ASTContext &Ctx,
|
|||
migrateFactoryMethod(Ctx, CDecl, OM);
|
||||
return;
|
||||
}
|
||||
ReplaceWithInstancetype(*this, OM);
|
||||
ReplaceWithInstancetype(Ctx, *this, OM);
|
||||
}
|
||||
|
||||
static bool TypeIsInnerPointer(QualType T) {
|
||||
|
@ -1224,7 +1228,7 @@ void ObjCMigrateASTConsumer::migrateFactoryMethod(ASTContext &Ctx,
|
|||
if (OIT_Family == OIT_ReturnsSelf)
|
||||
ReplaceWithClasstype(*this, OM);
|
||||
else
|
||||
ReplaceWithInstancetype(*this, OM);
|
||||
ReplaceWithInstancetype(Ctx, *this, OM);
|
||||
}
|
||||
|
||||
static bool IsVoidStarType(QualType Ty) {
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
// RUN: %clang_cc1 -objcmt-migrate-instancetype %s -triple x86_64-apple-darwin11 -fobjc-arc -migrate -o %t.remap
|
||||
// RUN: FileCheck %s -input-file=%t.remap
|
||||
|
||||
// Make sure we don't create an edit unnecessarily.
|
||||
// CHECK-NOT: instancetype
|
||||
|
||||
@class NSString;
|
||||
@interface NSDictionary
|
||||
+(instancetype) dictionaryWithURLEncodedString:(NSString *)urlEncodedString;
|
||||
@end
|
Loading…
Reference in New Issue