diff options
| author | John McCall <rjmccall@apple.com> | 2010-05-13 08:39:13 +0000 |
|---|---|---|
| committer | John McCall <rjmccall@apple.com> | 2010-05-13 08:39:13 +0000 |
| commit | 01f21ad97cf4d7074dec4401c66bcf43a0360844 (patch) | |
| tree | 54e56387bfac8ef464a62898c5f9dbeda42e4162 /clang/lib/Sema/TreeTransform.h | |
| parent | 6e8417c0e5e71b1cb070f401bd593742e655ff51 (diff) | |
| download | bcm5719-llvm-01f21ad97cf4d7074dec4401c66bcf43a0360844.tar.gz bcm5719-llvm-01f21ad97cf4d7074dec4401c66bcf43a0360844.zip | |
Rebuild builtin_id * as an ObjCObjectPointerType, where builtin_id is the
magic type that 'id' is a pointer to.
llvm-svn: 103708
Diffstat (limited to 'clang/lib/Sema/TreeTransform.h')
| -rw-r--r-- | clang/lib/Sema/TreeTransform.h | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h index 4923480737e..35152617336 100644 --- a/clang/lib/Sema/TreeTransform.h +++ b/clang/lib/Sema/TreeTransform.h @@ -2445,16 +2445,24 @@ QualType TreeTransform<Derived>::TransformPointerType(TypeLocBuilder &TLB, return QualType(); QualType Result = TL.getType(); - if (PointeeType->isObjCInterfaceType()) { + if (PointeeType->isObjCInterfaceType() || + PointeeType->isSpecificBuiltinType(BuiltinType::ObjCId)) { // A dependent pointer type 'T *' has is being transformed such // that an Objective-C class type is being replaced for 'T'. The // resulting pointer type is an ObjCObjectPointerType, not a // PointerType. - const ObjCInterfaceType *IFace = PointeeType->getAs<ObjCInterfaceType>(); + ObjCProtocolDecl **Protocols = 0; + unsigned NumProtocols = 0; + + if (const ObjCInterfaceType *IFace + = PointeeType->getAs<ObjCInterfaceType>()) { + Protocols = const_cast<ObjCProtocolDecl**>(IFace->qual_begin()); + NumProtocols = IFace->getNumProtocols(); + } + Result = SemaRef.Context.getObjCObjectPointerType(PointeeType, - const_cast<ObjCProtocolDecl **>( - IFace->qual_begin()), - IFace->getNumProtocols()); + Protocols, + NumProtocols); ObjCObjectPointerTypeLoc NewT = TLB.push<ObjCObjectPointerTypeLoc>(Result); NewT.setStarLoc(TL.getSigilLoc()); |

