Template instantiation support for Obj-C @encode expressions.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73034 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaTemplateInstantiateExpr.cpp b/lib/Sema/SemaTemplateInstantiateExpr.cpp
index 5ba42f2..9576627 100644
--- a/lib/Sema/SemaTemplateInstantiateExpr.cpp
+++ b/lib/Sema/SemaTemplateInstantiateExpr.cpp
@@ -1222,9 +1222,17 @@
}
Sema::OwningExprResult
-TemplateExprInstantiator::VisitObjCEncodeExpr(ObjCEncodeExpr *E) {
- assert(false && "FIXME: Template instantiations for ObjC expressions");
- return SemaRef.ExprError();
+TemplateExprInstantiator::VisitObjCEncodeExpr(ObjCEncodeExpr *E) {
+ QualType EncodedType = SemaRef.InstantiateType(E->getEncodedType(),
+ TemplateArgs,
+ /*FIXME:*/E->getAtLoc(),
+ DeclarationName());
+ if (EncodedType.isNull())
+ return SemaRef.ExprError();
+
+ return SemaRef.Owned(SemaRef.BuildObjCEncodeExpression(E->getAtLoc(),
+ EncodedType,
+ E->getRParenLoc()));
}
Sema::OwningExprResult