diff options
Diffstat (limited to 'clang/AST')
| -rw-r--r-- | clang/AST/ASTContext.cpp | 13 | ||||
| -rw-r--r-- | clang/AST/Type.cpp | 6 |
2 files changed, 7 insertions, 12 deletions
diff --git a/clang/AST/ASTContext.cpp b/clang/AST/ASTContext.cpp index 322f34ccf2d..4351b89e960 100644 --- a/clang/AST/ASTContext.cpp +++ b/clang/AST/ASTContext.cpp @@ -687,7 +687,7 @@ QualType ASTContext::getTypedefType(TypedefDecl *Decl) { QualType ASTContext::getObjcInterfaceType(ObjcInterfaceDecl *Decl) { if (Decl->TypeForDecl) return QualType(Decl->TypeForDecl, 0); - Decl->TypeForDecl = new ObjcInterfaceType(Decl); + Decl->TypeForDecl = new ObjcInterfaceType(Type::ObjcInterface, Decl); Types.push_back(Decl->TypeForDecl); return QualType(Decl->TypeForDecl, 0); } @@ -697,11 +697,8 @@ QualType ASTContext::getObjcInterfaceType(ObjcInterfaceDecl *Decl) { /// the conforming protocol list. QualType ASTContext::getObjcQualifiedInterfaceType(ObjcInterfaceDecl *Decl, ObjcProtocolDecl **Protocols, unsigned NumProtocols) { - ObjcInterfaceType *IType = - cast<ObjcInterfaceType>(getObjcInterfaceType(Decl)); - llvm::FoldingSetNodeID ID; - ObjcQualifiedInterfaceType::Profile(ID, IType, Protocols, NumProtocols); + ObjcQualifiedInterfaceType::Profile(ID, Protocols, NumProtocols); void *InsertPos = 0; if (ObjcQualifiedInterfaceType *QT = @@ -710,7 +707,7 @@ QualType ASTContext::getObjcQualifiedInterfaceType(ObjcInterfaceDecl *Decl, // No Match; ObjcQualifiedInterfaceType *QType = - new ObjcQualifiedInterfaceType(IType, Protocols, NumProtocols); + new ObjcQualifiedInterfaceType(Decl, Protocols, NumProtocols); Types.push_back(QType); ObjcQualifiedInterfaceTypes.InsertNode(QType, InsertPos); return QualType(QType, 0); @@ -1204,8 +1201,8 @@ bool ASTContext::QualifiedInterfaceTypesAreCompatible(QualType lhs, ObjcQualifiedInterfaceType *rhsQI = dyn_cast<ObjcQualifiedInterfaceType>(rhs.getCanonicalType().getTypePtr()); assert(rhsQI && "QualifiedInterfaceTypesAreCompatible - bad rhs type"); - if (!interfaceTypesAreCompatible(QualType(lhsQI->getInterfaceType(), 0), - QualType(rhsQI->getInterfaceType(), 0))) + if (!interfaceTypesAreCompatible(getObjcInterfaceType(lhsQI->getDecl()), + getObjcInterfaceType(rhsQI->getDecl()))) return false; /* All protocols in lhs must have a presense in rhs. */ for (unsigned i =0; i < lhsQI->getNumProtocols(); i++) { diff --git a/clang/AST/Type.cpp b/clang/AST/Type.cpp index 4befdcb5425..b1da04b0a31 100644 --- a/clang/AST/Type.cpp +++ b/clang/AST/Type.cpp @@ -529,16 +529,14 @@ void FunctionTypeProto::Profile(llvm::FoldingSetNodeID &ID) { } void ObjcQualifiedInterfaceType::Profile(llvm::FoldingSetNodeID &ID, - ObjcInterfaceType *interfaceType, ObjcProtocolDecl **protocols, unsigned NumProtocols) { - ID.AddPointer(interfaceType); for (unsigned i = 0; i != NumProtocols; i++) ID.AddPointer(protocols[i]); } void ObjcQualifiedInterfaceType::Profile(llvm::FoldingSetNodeID &ID) { - Profile(ID, getInterfaceType(), &Protocols[0], getNumProtocols()); + Profile(ID, &Protocols[0], getNumProtocols()); } /// LookThroughTypedefs - Return the ultimate type this typedef corresponds to @@ -770,7 +768,7 @@ void ObjcQualifiedInterfaceType::getAsStringInternal( std::string &InnerString) const { if (!InnerString.empty()) // Prefix the basic type, e.g. 'typedefname X'. InnerString = ' ' + InnerString; - std::string ObjcQIString = getInterfaceType()->getDecl()->getName(); + std::string ObjcQIString = getDecl()->getName(); ObjcQIString += '<'; int num = getNumProtocols(); for (int i = 0; i < num; i++) { |

