summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/include/clang/Basic/IdentifierTable.h9
-rw-r--r--clang/lib/Parse/ParseObjc.cpp9
-rw-r--r--clang/lib/Sema/SemaExpr.cpp7
-rw-r--r--clang/lib/Sema/SemaExprObjC.cpp6
4 files changed, 17 insertions, 14 deletions
diff --git a/clang/include/clang/Basic/IdentifierTable.h b/clang/include/clang/Basic/IdentifierTable.h
index df0200f1e70..70e1cbfdd37 100644
--- a/clang/include/clang/Basic/IdentifierTable.h
+++ b/clang/include/clang/Basic/IdentifierTable.h
@@ -435,13 +435,16 @@ public:
/// constructSetterName - Return the setter name for the given
/// identifier, i.e. "set" + Name where the initial character of Name
/// has been capitalized.
- static IdentifierInfo *constructSetterName(IdentifierTable &Idents,
- const IdentifierInfo *Name) {
+ static Selector constructSetterName(IdentifierTable &Idents,
+ SelectorTable &SelTable,
+ const IdentifierInfo *Name) {
llvm::SmallString<100> SelectorName;
SelectorName = "set";
SelectorName.append(Name->getName(), Name->getName()+Name->getLength());
SelectorName[3] = toupper(SelectorName[3]);
- return &Idents.get(&SelectorName[0], &SelectorName[SelectorName.size()]);
+ IdentifierInfo *SetterName =
+ &Idents.get(&SelectorName[0], &SelectorName[SelectorName.size()]);
+ return SelTable.getUnarySelector(SetterName);
}
// Emit - Emit a SelectorTable to bitcode.
diff --git a/clang/lib/Parse/ParseObjc.cpp b/clang/lib/Parse/ParseObjc.cpp
index 8a3672d29ce..293fe257cc8 100644
--- a/clang/lib/Parse/ParseObjc.cpp
+++ b/clang/lib/Parse/ParseObjc.cpp
@@ -328,11 +328,12 @@ void Parser::ParseObjCInterfaceDeclList(DeclTy *interfaceDecl,
PP.getSelectorTable().getNullarySelector(SelName);
IdentifierInfo *SetterName = OCDS.getSetterName();
if (!SetterName)
- SetterName =
- SelectorTable::constructSetterName(PP.getIdentifierTable(),
- FD.D.getIdentifier());
+ SetterName = FD.D.getIdentifier();
+
Selector SetterSel =
- PP.getSelectorTable().getUnarySelector(SetterName);
+ SelectorTable::constructSetterName(PP.getIdentifierTable(),
+ PP.getSelectorTable(),
+ SetterName);
bool isOverridingProperty = false;
DeclTy *Property = Actions.ActOnProperty(CurScope, AtLoc, FD, OCDS,
GetterSel, SetterSel,
diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp
index f37c0d5bad1..df8afa450bb 100644
--- a/clang/lib/Sema/SemaExpr.cpp
+++ b/clang/lib/Sema/SemaExpr.cpp
@@ -1886,10 +1886,9 @@ Sema::ActOnMemberReferenceExpr(Scope *S, ExprArg Base, SourceLocation OpLoc,
// If we found a getter then this may be a valid dot-reference, we
// will look for the matching setter, in case it is needed.
- IdentifierInfo *SetterName =
- SelectorTable::constructSetterName(PP.getIdentifierTable(), &Member);
-
- Selector SetterSel = PP.getSelectorTable().getUnarySelector(SetterName);
+ Selector SetterSel =
+ SelectorTable::constructSetterName(PP.getIdentifierTable(),
+ PP.getSelectorTable(), &Member);
ObjCMethodDecl *Setter = IFace->lookupInstanceMethod(SetterSel);
if (!Setter) {
// If this reference is in an @implementation, also check for 'private'
diff --git a/clang/lib/Sema/SemaExprObjC.cpp b/clang/lib/Sema/SemaExprObjC.cpp
index 98fbd963311..ce9fe897193 100644
--- a/clang/lib/Sema/SemaExprObjC.cpp
+++ b/clang/lib/Sema/SemaExprObjC.cpp
@@ -298,10 +298,10 @@ Action::OwningExprResult Sema::ActOnClassPropertyRefExpr(
}
// Look for the matching setter, in case it is needed.
- IdentifierInfo *SetterName =
- SelectorTable::constructSetterName(PP.getIdentifierTable(), &propertyName);
+ Selector SetterSel =
+ SelectorTable::constructSetterName(PP.getIdentifierTable(),
+ PP.getSelectorTable(), &propertyName);
- Selector SetterSel = PP.getSelectorTable().getUnarySelector(SetterName);
ObjCMethodDecl *Setter = IFace->lookupClassMethod(SetterSel);
if (!Setter) {
// If this reference is in an @implementation, also check for 'private'
OpenPOWER on IntegriCloud