diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2013-07-23 19:31:17 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2013-07-23 19:31:17 +0000 |
commit | 4f3a64fd6e9dff09da70c4185243905dbfe9910c (patch) | |
tree | 0833e69f1cdb1ae8201024b5475c7d890560757f /clang/lib/Basic/IdentifierTable.cpp | |
parent | b7243381c2b7a7214af5e1f8d557f2d9b85642bf (diff) | |
download | bcm5719-llvm-4f3a64fd6e9dff09da70c4185243905dbfe9910c.tar.gz bcm5719-llvm-4f3a64fd6e9dff09da70c4185243905dbfe9910c.zip |
ObjC migrator: Define family of methods
which are candidate for migrating to
'instancetype'. wip.
llvm-svn: 186981
Diffstat (limited to 'clang/lib/Basic/IdentifierTable.cpp')
-rw-r--r-- | clang/lib/Basic/IdentifierTable.cpp | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/clang/lib/Basic/IdentifierTable.cpp b/clang/lib/Basic/IdentifierTable.cpp index b8ba4ba4d51..faff4d88635 100644 --- a/clang/lib/Basic/IdentifierTable.cpp +++ b/clang/lib/Basic/IdentifierTable.cpp @@ -452,6 +452,39 @@ ObjCMethodFamily Selector::getMethodFamilyImpl(Selector sel) { 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; |