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 fbb41d8..a865100 100644
--- a/lib/Sema/TreeTransform.h
+++ b/lib/Sema/TreeTransform.h
@@ -1720,23 +1720,6 @@
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 @@
TreeTransform<Derived>::TransformObjCInterfaceType(TypeLocBuilder &TLB,
ObjCInterfaceTypeLoc TL,
QualType ObjectType) {
- assert(false && "TransformObjCInterfaceType unimplemented");
- return QualType();
+ // ObjCInterfaceType is never dependent.
+ return TL.getType();
}
template<typename Derived>
@@ -3181,8 +3164,8 @@
TreeTransform<Derived>::TransformObjCObjectPointerType(TypeLocBuilder &TLB,
ObjCObjectPointerTypeLoc TL,
QualType ObjectType) {
- assert(false && "TransformObjCObjectPointerType unimplemented");
- return QualType();
+ // ObjCObjectPointerType is never dependent.
+ return TL.getType();
}
//===----------------------------------------------------------------------===//
@@ -5599,23 +5582,7 @@
template<typename Derived>
Sema::OwningExprResult
TreeTransform<Derived>::TransformObjCProtocolExpr(ObjCProtocolExpr *E) {
- ObjCProtocolDecl *Protocol
- = cast_or_null<ObjCProtocolDecl>(
- 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<typename Derived>
@@ -5646,8 +5613,7 @@
template<typename Derived>
Sema::OwningExprResult
TreeTransform<Derived>::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());
}