ObjC migrator: Define family of methods
which are candidate for migrating to
'instancetype'. wip.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186981 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Basic/IdentifierTable.cpp b/lib/Basic/IdentifierTable.cpp
index b8ba4ba..faff4d8 100644
--- a/lib/Basic/IdentifierTable.cpp
+++ b/lib/Basic/IdentifierTable.cpp
@@ -452,6 +452,39 @@
return OMF_None;
}
+ObjCInstanceTypeFamily Selector::getInstTypeMethodFamilyImpl(Selector sel) {
+ IdentifierInfo *first = sel.getIdentifierInfoForSlot(0);
+ if (!first) return OIT_None;
+
+ StringRef name = first->getName();
+
+ if (name.empty()) return OIT_None;
+ switch (name.front()) {
+ case 'a':
+ if (startsWithWord(name, "alloc")) return OIT_MemManage;
+ else
+ if (startsWithWord(name, "array")) return OIT_Array;
+ break;
+ case 'd':
+ if (startsWithWord(name, "dictionary")) return OIT_Dictionary;
+ break;
+ case 'i':
+ if (startsWithWord(name, "init")) return OIT_MemManage;
+ break;
+ case 's':
+ if (startsWithWord(name, "string")) return OIT_NSString;
+ else
+ if (startsWithWord(name, "set")) return OIT_NSSet;
+ break;
+ case 'U':
+ if (startsWithWord(name, "URL")) return OIT_NSURL;
+ break;
+ default:
+ break;
+ }
+ return OIT_None;
+}
+
namespace {
struct SelectorTableImpl {
llvm::FoldingSet<MultiKeywordSelector> Table;