From: Daniel Dunbar Date: Wed, 22 Apr 2009 04:34:53 +0000 (+0000) Subject: Mark another TypeForDecl const and make getObjCInterfaceType's argument const. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3b3a45858c6b2a45114e91902c3bf3c4b7f5f302;p=clang Mark another TypeForDecl const and make getObjCInterfaceType's argument const. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69772 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/AST/ASTContext.h b/include/clang/AST/ASTContext.h index 11f629a6f9..2be3689bc0 100644 --- a/include/clang/AST/ASTContext.h +++ b/include/clang/AST/ASTContext.h @@ -299,7 +299,7 @@ public: /// getTypedefType - Return the unique reference to the type for the /// specified typename decl. QualType getTypedefType(TypedefDecl *Decl); - QualType getObjCInterfaceType(ObjCInterfaceDecl *Decl); + QualType getObjCInterfaceType(const ObjCInterfaceDecl *Decl); QualType getTemplateTypeParmType(unsigned Depth, unsigned Index, IdentifierInfo *Name = 0); diff --git a/include/clang/AST/DeclObjC.h b/include/clang/AST/DeclObjC.h index 60bbd6fe14..ddcbb0c2ea 100644 --- a/include/clang/AST/DeclObjC.h +++ b/include/clang/AST/DeclObjC.h @@ -368,7 +368,7 @@ public: class ObjCInterfaceDecl : public ObjCContainerDecl { /// TypeForDecl - This indicates the Type object that represents this /// TypeDecl. It is a cache maintained by ASTContext::getObjCInterfaceType - Type *TypeForDecl; + mutable Type *TypeForDecl; friend class ASTContext; /// Class's super class. @@ -492,7 +492,7 @@ public: // Low-level accessor Type *getTypeForDecl() const { return TypeForDecl; } - void setTypeForDecl(Type *TD) { TypeForDecl = TD; } + void setTypeForDecl(Type *TD) const { TypeForDecl = TD; } static bool classof(const Decl *D) { return D->getKind() == ObjCInterface; } static bool classof(const ObjCInterfaceDecl *D) { return true; } diff --git a/include/clang/Analysis/PathSensitive/MemRegion.h b/include/clang/Analysis/PathSensitive/MemRegion.h index 7397c92138..290599d137 100644 --- a/include/clang/Analysis/PathSensitive/MemRegion.h +++ b/include/clang/Analysis/PathSensitive/MemRegion.h @@ -463,8 +463,7 @@ public: } QualType getRValueType(ASTContext& C) const { - ObjCInterfaceDecl* ID = const_cast(getInterface()); - return C.getObjCInterfaceType(ID); + return C.getObjCInterfaceType(getInterface()); } static bool classof(const MemRegion* R) { diff --git a/lib/AST/ASTContext.cpp b/lib/AST/ASTContext.cpp index a3a2778860..af7cf124ef 100644 --- a/lib/AST/ASTContext.cpp +++ b/lib/AST/ASTContext.cpp @@ -1383,10 +1383,11 @@ QualType ASTContext::getTypedefType(TypedefDecl *Decl) { /// getObjCInterfaceType - Return the unique reference to the type for the /// specified ObjC interface decl. -QualType ASTContext::getObjCInterfaceType(ObjCInterfaceDecl *Decl) { +QualType ASTContext::getObjCInterfaceType(const ObjCInterfaceDecl *Decl) { if (Decl->TypeForDecl) return QualType(Decl->TypeForDecl, 0); - Decl->TypeForDecl = new(*this,8) ObjCInterfaceType(Type::ObjCInterface, Decl); + ObjCInterfaceDecl *OID = const_cast(Decl); + Decl->TypeForDecl = new(*this,8) ObjCInterfaceType(Type::ObjCInterface, OID); Types.push_back(Decl->TypeForDecl); return QualType(Decl->TypeForDecl, 0); } diff --git a/lib/AST/DeclObjC.cpp b/lib/AST/DeclObjC.cpp index be23e3039d..de10230991 100644 --- a/lib/AST/DeclObjC.cpp +++ b/lib/AST/DeclObjC.cpp @@ -277,7 +277,7 @@ void ObjCMethodDecl::createImplicitParams(ASTContext &Context, // There may be no interface context due to error in declaration // of the interface (which has been reported). Recover gracefully. if (OID) { - selfTy =Context.getObjCInterfaceType(const_cast(OID)); + selfTy = Context.getObjCInterfaceType(OID); selfTy = Context.getPointerType(selfTy); } else { selfTy = Context.getObjCIdType(); diff --git a/lib/CodeGen/CodeGenTypes.cpp b/lib/CodeGen/CodeGenTypes.cpp index 984e49e120..5d98b453ac 100644 --- a/lib/CodeGen/CodeGenTypes.cpp +++ b/lib/CodeGen/CodeGenTypes.cpp @@ -199,8 +199,7 @@ void CodeGenTypes::UpdateCompletedType(const TagDecl *TD) { void CodeGenTypes::UpdateCompletedType(const ObjCInterfaceDecl *OID) { // Check to see if we have already laid this type out, if not, just return. - QualType OIDTy = - Context.getObjCInterfaceType(const_cast(OID)); + QualType OIDTy = Context.getObjCInterfaceType(OID); llvm::DenseMap::iterator TCI = TypeCache.find(OIDTy.getTypePtr()); if (TCI == TypeCache.end()) return;