diff options
author | Alex Lorenz <arphaman@gmail.com> | 2018-05-23 00:52:20 +0000 |
---|---|---|
committer | Alex Lorenz <arphaman@gmail.com> | 2018-05-23 00:52:20 +0000 |
commit | 5a5a654165ab32c31715a6f0d9bbe97096283749 (patch) | |
tree | 90d907b18d577d1860cb4310c9aa8cd774810c32 /clang/lib/Basic/IdentifierTable.cpp | |
parent | 1e4d35044f7c5346cb3a860361c09a93d4def86c (diff) | |
download | bcm5719-llvm-5a5a654165ab32c31715a6f0d9bbe97096283749.tar.gz bcm5719-llvm-5a5a654165ab32c31715a6f0d9bbe97096283749.zip |
[AST][ObjC] Print implicit property expression that only has a setter without crashing
rdar://40447209
llvm-svn: 333046
Diffstat (limited to 'clang/lib/Basic/IdentifierTable.cpp')
-rw-r--r-- | clang/lib/Basic/IdentifierTable.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/clang/lib/Basic/IdentifierTable.cpp b/clang/lib/Basic/IdentifierTable.cpp index ec9ca7616cb..37703ca776d 100644 --- a/clang/lib/Basic/IdentifierTable.cpp +++ b/clang/lib/Basic/IdentifierTable.cpp @@ -645,6 +645,12 @@ SelectorTable::constructSetterSelector(IdentifierTable &Idents, return SelTable.getUnarySelector(SetterName); } +std::string SelectorTable::getPropertyNameFromSetterSelector(Selector Sel) { + StringRef Name = Sel.getNameForSlot(0); + assert(Name.startswith("set") && "invalid setter name"); + return (Twine(toLowercase(Name[3])) + Name.drop_front(4)).str(); +} + size_t SelectorTable::getTotalMemory() const { SelectorTableImpl &SelTabImpl = getSelectorTableImpl(Impl); return SelTabImpl.Allocator.getTotalMemory(); |