From: Chris Lattner Date: Mon, 7 Apr 2008 04:17:40 +0000 (+0000) Subject: make QualifiedInterfaceTypesAreCompatible a static function X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3b27546b42bc3d5ec261f3228192350affb370be;p=clang make QualifiedInterfaceTypesAreCompatible a static function and start simplifying it. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49307 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/AST/ASTContext.h b/include/clang/AST/ASTContext.h index 2accd9bf4b..188d440407 100644 --- a/include/clang/AST/ASTContext.h +++ b/include/clang/AST/ASTContext.h @@ -335,7 +335,6 @@ public: bool builtinTypesAreCompatible(QualType, QualType); bool vectorTypesAreCompatible(QualType, QualType); - bool QualifiedInterfaceTypesAreCompatible(QualType, QualType); bool ObjCQualifiedIdTypesAreCompatible(QualType, QualType, bool = false); bool objcTypesAreCompatible(QualType, QualType); bool isObjCIdType(QualType T) const { diff --git a/lib/AST/ASTContext.cpp b/lib/AST/ASTContext.cpp index 6e0bfa1a98..9131db84f6 100644 --- a/lib/AST/ASTContext.cpp +++ b/lib/AST/ASTContext.cpp @@ -1443,25 +1443,20 @@ bool ASTContext::objcTypesAreCompatible(QualType LHS, QualType RHS) { return false; } -bool ASTContext::QualifiedInterfaceTypesAreCompatible(QualType lhs, - QualType rhs) { - const ObjCQualifiedInterfaceType *lhsQI = - lhs->getAsObjCQualifiedInterfaceType(); - const ObjCQualifiedInterfaceType *rhsQI = - rhs->getAsObjCQualifiedInterfaceType(); - assert(lhsQI && rhsQI && "QualifiedInterfaceTypesAreCompatible - bad type"); - - // Verify that the base decls are compatible, the RHS must be a subclass of +static bool +areCompatObjCQualInterfaces(const ObjCQualifiedInterfaceType *LHS, + const ObjCQualifiedInterfaceType *RHS) { + // Verify that the base decls are compatible: the RHS must be a subclass of // the LHS. - if (!lhsQI->getDecl()->isSuperClassOf(rhsQI->getDecl())) + if (!LHS->getDecl()->isSuperClassOf(RHS->getDecl())) return false; - // All protocols in lhs must have a presence in rhs. - for (unsigned i = 0; i != lhsQI->getNumProtocols(); ++i) { + // All protocols in LHS must have a presence in RHS. + for (unsigned i = 0; i != LHS->getNumProtocols(); ++i) { bool match = false; - ObjCProtocolDecl *lhsProto = lhsQI->getProtocols(i); - for (unsigned j = 0; j != rhsQI->getNumProtocols(); ++j) { - ObjCProtocolDecl *rhsProto = rhsQI->getProtocols(j); + ObjCProtocolDecl *lhsProto = LHS->getProtocols(i); + for (unsigned j = 0; j != RHS->getNumProtocols(); ++j) { + ObjCProtocolDecl *rhsProto = RHS->getProtocols(j); if (lhsProto == rhsProto) { match = true; break; @@ -1852,7 +1847,8 @@ bool ASTContext::typesAreCompatible(QualType LHS_NC, QualType RHS_NC) { case Type::OCUVector: return vectorTypesAreCompatible(LHS, RHS); case Type::ObjCQualifiedInterface: - return QualifiedInterfaceTypesAreCompatible(LHS, RHS); + return areCompatObjCQualInterfaces(cast(LHS), + cast(RHS)); default: assert(0 && "unexpected type"); }