forked from OSchip/llvm-project
Refactor ObjCImplDecl::getInstanceMethod/getClassMethod into one
ObjCImplDecl::getMethod. llvm-svn: 77094
This commit is contained in:
parent
553376be19
commit
39c348d915
|
@ -872,11 +872,12 @@ public:
|
|||
}
|
||||
|
||||
// Get the local instance/class method declared in this interface.
|
||||
ObjCMethodDecl *getInstanceMethod(Selector Sel) const;
|
||||
ObjCMethodDecl *getClassMethod(Selector Sel) const;
|
||||
ObjCMethodDecl *getMethod(Selector Sel, bool isInstance) const {
|
||||
return isInstance ? getInstanceMethod(Sel)
|
||||
: getClassMethod(Sel);
|
||||
ObjCMethodDecl *getMethod(Selector Sel, bool isInstance) const;
|
||||
ObjCMethodDecl *getInstanceMethod(Selector Sel) const {
|
||||
return getMethod(Sel, true/*isInstance*/);
|
||||
}
|
||||
ObjCMethodDecl *getClassMethod(Selector Sel) const {
|
||||
return getMethod(Sel, false/*isInstance*/);
|
||||
}
|
||||
|
||||
void addPropertyImplementation(ObjCPropertyImplDecl *property);
|
||||
|
|
|
@ -587,10 +587,10 @@ FindPropertyImplDecl(IdentifierInfo *Id) const {
|
|||
return 0;
|
||||
}
|
||||
|
||||
// getInstanceMethod - This method returns an instance method by looking in
|
||||
// getMethod - This method returns an instance/class method by looking in
|
||||
// the class implementation. Unlike interfaces, we don't look outside the
|
||||
// implementation.
|
||||
ObjCMethodDecl *ObjCImplDecl::getInstanceMethod(Selector Sel) const {
|
||||
ObjCMethodDecl *ObjCImplDecl::getMethod(Selector Sel, bool isInstance) const {
|
||||
// Since instance & class methods can have the same name, the loop below
|
||||
// ensures we get the correct method.
|
||||
//
|
||||
|
@ -603,29 +603,7 @@ ObjCMethodDecl *ObjCImplDecl::getInstanceMethod(Selector Sel) const {
|
|||
for (llvm::tie(Meth, MethEnd) = lookup(Sel);
|
||||
Meth != MethEnd; ++Meth) {
|
||||
ObjCMethodDecl *MD = dyn_cast<ObjCMethodDecl>(*Meth);
|
||||
if (MD && MD->isInstanceMethod())
|
||||
return MD;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
// getClassMethod - This method returns an instance method by looking in
|
||||
// the class implementation. Unlike interfaces, we don't look outside the
|
||||
// implementation.
|
||||
ObjCMethodDecl *ObjCImplDecl::getClassMethod(Selector Sel) const {
|
||||
// Since instance & class methods can have the same name, the loop below
|
||||
// ensures we get the correct method.
|
||||
//
|
||||
// @interface Whatever
|
||||
// - (int) class_method;
|
||||
// + (float) class_method;
|
||||
// @end
|
||||
//
|
||||
lookup_const_iterator Meth, MethEnd;
|
||||
for (llvm::tie(Meth, MethEnd) = lookup(Sel);
|
||||
Meth != MethEnd; ++Meth) {
|
||||
ObjCMethodDecl *MD = dyn_cast<ObjCMethodDecl>(*Meth);
|
||||
if (MD && MD->isClassMethod())
|
||||
if (MD && MD->isInstanceMethod() == isInstance)
|
||||
return MD;
|
||||
}
|
||||
return 0;
|
||||
|
|
Loading…
Reference in New Issue