Implement DenseMapInfo for Selector, allowing use of DenseMap/DenseSet of
Selector's instead of requiring void* to be used. I converted one use of
DenseSet<void*> over to use DenseSet<Selector> but the others should change
as well.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42645 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Sema/SemaDecl.cpp b/Sema/SemaDecl.cpp
index f7d8dd8..b827732 100644
--- a/Sema/SemaDecl.cpp
+++ b/Sema/SemaDecl.cpp
@@ -1221,7 +1221,7 @@
void Sema::CheckProtocolMethodDefs(ObjcProtocolDecl *PDecl,
bool& IncompleteImpl,
const llvm::DenseSet<void *>& InsMap,
- const llvm::DenseSet<void *>& ClsMap) {
+ const llvm::DenseSet<Selector> &ClsMap) {
// check unimplemented instance methods.
ObjcMethodDecl** methods = PDecl->getInstanceMethods();
for (int j = 0; j < PDecl->getNumInstanceMethods(); j++) {
@@ -1236,7 +1236,7 @@
// check unimplemented class methods
methods = PDecl->getClassMethods();
for (int j = 0; j < PDecl->getNumClassMethods(); j++)
- if (!ClsMap.count(methods[j]->getSelector().getAsOpaquePtr())) {
+ if (!ClsMap.count(methods[j]->getSelector())) {
llvm::SmallString<128> buf;
Diag(methods[j]->getLocation(), diag::warn_undef_method_impl,
methods[j]->getSelector().getName(buf));
@@ -1267,16 +1267,16 @@
methods[j]->getSelector().getName(buf));
IncompleteImpl = true;
}
- llvm::DenseSet<void *> ClsMap;
+ llvm::DenseSet<Selector> ClsMap;
// Check and see if class methods in class interface have been
// implemented in the implementation class.
methods = IMPDecl->getClassMethods();
for (int i=0; i < IMPDecl->getNumClassMethods(); i++)
- ClsMap.insert(methods[i]->getSelector().getAsOpaquePtr());
+ ClsMap.insert(methods[i]->getSelector());
methods = IDecl->getClassMethods();
for (int j = 0; j < IDecl->getNumClassMethods(); j++)
- if (!ClsMap.count(methods[j]->getSelector().getAsOpaquePtr())) {
+ if (!ClsMap.count(methods[j]->getSelector())) {
llvm::SmallString<128> buf;
Diag(methods[j]->getLocation(), diag::warn_undef_method_impl,
methods[j]->getSelector().getName(buf));
@@ -1286,10 +1286,9 @@
// Check the protocol list for unimplemented methods in the @implementation
// class.
ObjcProtocolDecl** protocols = IDecl->getReferencedProtocols();
- for (int i = 0; i < IDecl->getNumIntfRefProtocols(); i++) {
- ObjcProtocolDecl* PDecl = protocols[i];
- CheckProtocolMethodDefs(PDecl, IncompleteImpl, InsMap, ClsMap);
- }
+ for (int i = 0; i < IDecl->getNumIntfRefProtocols(); i++)
+ CheckProtocolMethodDefs(protocols[i], IncompleteImpl, InsMap, ClsMap);
+
if (IncompleteImpl)
Diag(IMPDecl->getLocation(), diag::warn_incomplete_impl_class,
IMPDecl->getName());
@@ -1315,16 +1314,16 @@
methods[j]->getSelector().getName(buf));
IncompleteImpl = true;
}
- llvm::DenseSet<void *> ClsMap;
+ llvm::DenseSet<Selector> ClsMap;
// Check and see if class methods in category interface have been
// implemented in its implementation class.
methods = CatImplDecl->getClassMethods();
for (int i=0; i < CatImplDecl->getNumClassMethods(); i++)
- ClsMap.insert(methods[i]->getSelector().getAsOpaquePtr());
+ ClsMap.insert(methods[i]->getSelector());
methods = CatClassDecl->getClassMethods();
for (int j = 0; j < CatClassDecl->getNumClassMethods(); j++)
- if (!ClsMap.count(methods[j]->getSelector().getAsOpaquePtr())) {
+ if (!ClsMap.count(methods[j]->getSelector())) {
llvm::SmallString<128> buf;
Diag(methods[j]->getLocation(), diag::warn_undef_method_impl,
methods[j]->getSelector().getName(buf));