aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2010-04-22 17:28:13 +0000
committerDouglas Gregor <dgregor@apple.com>2010-04-22 17:28:13 +0000
commitef57c61ec3642ba7faaf7b9c0c4a6f23fa39d77c (patch)
treea2869ae08a158bbfee915014e6862c8a9b4efd5c /lib
parentf49bb082ebf6413b2d3cb956e9c78dbb8a978c58 (diff)
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
Diffstat (limited to 'lib')
-rw-r--r--lib/Sema/TreeTransform.h46
1 files changed, 6 insertions, 40 deletions
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<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 @@ QualType
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 @@ TreeTransform<Derived>::TransformObjCSelectorExpr(ObjCSelectorExpr *E) {
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 @@ TreeTransform<Derived>::TransformObjCImplicitSetterGetterRefExpr(
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());
}