From: Douglas Gregor Date: Thu, 22 Apr 2010 17:28:13 +0000 (+0000) Subject: Some Objective-C++ types and expressions will never change during X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ef57c61ec3642ba7faaf7b9c0c4a6f23fa39d77c;p=clang Some Objective-C++ types and expressions will never change during template instantiation, since they cannot be dependent or have dependent parts. Handle them the simple way. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102094 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/TreeTransform.h b/lib/Sema/TreeTransform.h index fbb41d83d2..a86510055f 100644 --- a/lib/Sema/TreeTransform.h +++ b/lib/Sema/TreeTransform.h @@ -1720,23 +1720,6 @@ public: move(Args)); } - /// \brief Build a new Objective-C protocol expression. - /// - /// By default, performs semantic analysis to build the new expression. - /// Subclasses may override this routine to provide different behavior. - OwningExprResult RebuildObjCProtocolExpr(ObjCProtocolDecl *Protocol, - SourceLocation AtLoc, - SourceLocation ProtoLoc, - SourceLocation LParenLoc, - SourceLocation RParenLoc) { - return SemaRef.Owned(SemaRef.ParseObjCProtocolExpression( - Protocol->getIdentifier(), - AtLoc, - ProtoLoc, - LParenLoc, - RParenLoc)); - } - /// \brief Build a new shuffle vector expression. /// /// By default, performs semantic analysis to build the new expression. @@ -3172,8 +3155,8 @@ QualType TreeTransform::TransformObjCInterfaceType(TypeLocBuilder &TLB, ObjCInterfaceTypeLoc TL, QualType ObjectType) { - assert(false && "TransformObjCInterfaceType unimplemented"); - return QualType(); + // ObjCInterfaceType is never dependent. + return TL.getType(); } template @@ -3181,8 +3164,8 @@ QualType TreeTransform::TransformObjCObjectPointerType(TypeLocBuilder &TLB, ObjCObjectPointerTypeLoc TL, QualType ObjectType) { - assert(false && "TransformObjCObjectPointerType unimplemented"); - return QualType(); + // ObjCObjectPointerType is never dependent. + return TL.getType(); } //===----------------------------------------------------------------------===// @@ -5599,23 +5582,7 @@ TreeTransform::TransformObjCSelectorExpr(ObjCSelectorExpr *E) { template Sema::OwningExprResult TreeTransform::TransformObjCProtocolExpr(ObjCProtocolExpr *E) { - ObjCProtocolDecl *Protocol - = cast_or_null( - getDerived().TransformDecl(E->getLocStart(), - E->getProtocol())); - if (!Protocol) - return SemaRef.ExprError(); - - if (!getDerived().AlwaysRebuild() && - Protocol == E->getProtocol()) - return SemaRef.Owned(E->Retain()); - - return getDerived().RebuildObjCProtocolExpr(Protocol, - E->getAtLoc(), - /*FIXME:*/E->getAtLoc(), - /*FIXME:*/E->getAtLoc(), - E->getRParenLoc()); - + return SemaRef.Owned(E->Retain()); } template @@ -5646,8 +5613,7 @@ TreeTransform::TransformObjCImplicitSetterGetterRefExpr( template Sema::OwningExprResult TreeTransform::TransformObjCSuperExpr(ObjCSuperExpr *E) { - // FIXME: Implement this! - assert(false && "Cannot transform Objective-C expressions yet"); + // Can never occur in a dependent context. return SemaRef.Owned(E->Retain()); }