]> granicus.if.org Git - clang/commitdiff
Implement simplify_type traits for redecl_iterator.
authorDavid Blaikie <dblaikie@gmail.com>
Tue, 1 May 2012 19:49:42 +0000 (19:49 +0000)
committerDavid Blaikie <dblaikie@gmail.com>
Tue, 1 May 2012 19:49:42 +0000 (19:49 +0000)
Based on Chandler Carruth's feedback on r155869.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155929 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/DeclBase.h
lib/Sema/SemaLookup.cpp

index 555ce3c4b6c314c6518b26444adb051c834e2835..6382bf3694f28ed6749e20627ce5e62107f864cc 100644 (file)
@@ -1632,6 +1632,23 @@ struct cast_convert_val< const ::clang::DeclContext, FromTy*, FromTy*> {
   }
 };
 
+// simplify_type - Allow clients to treat redecl_iterators just like Decl
+// pointers when using casting operators.
+template<> struct simplify_type< ::clang::Decl::redecl_iterator> {
+  typedef ::clang::Decl *SimpleType;
+  static SimpleType getSimplifiedValue(const ::clang::Decl::redecl_iterator
+      &Val) {
+    return Val;
+  }
+};
+template<> struct simplify_type<const ::clang::Decl::redecl_iterator> {
+  typedef ::clang::Decl *SimpleType;
+  static SimpleType getSimplifiedValue(const ::clang::Decl::redecl_iterator
+      &Val) {
+    return Val;
+  }
+};
+
 } // end namespace llvm
 
 #endif
index 3a6e290326021fd20c344943f948a7ccd7cf460b..78a99051555139c38c2c63d4031cc338c34f729a 100644 (file)
@@ -1069,7 +1069,7 @@ static NamedDecl *getVisibleDecl(NamedDecl *D) {
   
   for (Decl::redecl_iterator RD = D->redecls_begin(), RDEnd = D->redecls_end();
        RD != RDEnd; ++RD) {
-    if (NamedDecl *ND = dyn_cast<NamedDecl>(&*RD)) {
+    if (NamedDecl *ND = dyn_cast<NamedDecl>(RD)) {
       if (LookupResult::isVisible(ND))
         return ND;
     }