summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/ARCMigrate/ObjCMT.cpp9
-rw-r--r--clang/lib/Basic/IdentifierTable.cpp2
2 files changed, 6 insertions, 5 deletions
diff --git a/clang/lib/ARCMigrate/ObjCMT.cpp b/clang/lib/ARCMigrate/ObjCMT.cpp
index 08444442c76..cffa625d3bd 100644
--- a/clang/lib/ARCMigrate/ObjCMT.cpp
+++ b/clang/lib/ARCMigrate/ObjCMT.cpp
@@ -657,11 +657,6 @@ static void ReplaceWithInstancetype(const ObjCMigrateASTConsumer &ASTC,
void ObjCMigrateASTConsumer::migrateMethodInstanceType(ASTContext &Ctx,
ObjCContainerDecl *CDecl,
ObjCMethodDecl *OM) {
- // bail out early and do not suggest 'instancetype' when the method already
- // has a related result type,
- if (OM->hasRelatedResultType())
- return;
-
ObjCInstanceTypeFamily OIT_Family =
Selector::getInstTypeMethodFamily(OM->getSelector());
@@ -679,6 +674,10 @@ void ObjCMigrateASTConsumer::migrateMethodInstanceType(ASTContext &Ctx,
case OIT_Singleton:
migrateFactoryMethod(Ctx, CDecl, OM, OIT_Singleton);
return;
+ case OIT_Init:
+ if (OM->getResultType()->isObjCIdType())
+ ReplaceWithInstancetype(*this, OM);
+ return;
}
if (!OM->getResultType()->isObjCIdType())
return;
diff --git a/clang/lib/Basic/IdentifierTable.cpp b/clang/lib/Basic/IdentifierTable.cpp
index 5102f7cfd33..a3eafe2b59b 100644
--- a/clang/lib/Basic/IdentifierTable.cpp
+++ b/clang/lib/Basic/IdentifierTable.cpp
@@ -471,6 +471,8 @@ ObjCInstanceTypeFamily Selector::getInstTypeMethodFamily(Selector sel) {
if (startsWithWord(name, "shared") ||
startsWithWord(name, "standard"))
return OIT_Singleton;
+ case 'i':
+ if (startsWithWord(name, "init")) return OIT_Init;
default:
break;
}
OpenPOWER on IntegriCloud