summaryrefslogtreecommitdiffstats
path: root/clang/AST
diff options
context:
space:
mode:
Diffstat (limited to 'clang/AST')
-rw-r--r--clang/AST/ASTContext.cpp13
-rw-r--r--clang/AST/Type.cpp6
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++) {
OpenPOWER on IntegriCloud