summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2013-09-18 20:35:47 +0000
committerFariborz Jahanian <fjahanian@apple.com>2013-09-18 20:35:47 +0000
commit1c900bcf26777db2cb3cb6e3f552a21e0aa3acd6 (patch)
treed71fecde48c75fe730bfb953402d4ffee85fa4cf /clang/lib
parentedfaae39562a9daa53cdb1e43efa764e00bd87df (diff)
downloadbcm5719-llvm-1c900bcf26777db2cb3cb6e3f552a21e0aa3acd6.tar.gz
bcm5719-llvm-1c900bcf26777db2cb3cb6e3f552a21e0aa3acd6.zip
ObjectiveC migrator: For consistency, also infer
'instancetype' for known family of methods with related result type; such as 'init' methods. // rdar://14987948 llvm-svn: 190956
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