Encapsulate template arguments lists in a new class,
TemplateArgumentList. This avoids the need to pass around
pointer/length pairs of template arguments lists, and will eventually
make it easier to introduce member templates and variadic templates.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71517 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaTemplateInstantiateExpr.cpp b/lib/Sema/SemaTemplateInstantiateExpr.cpp
index 5476ad3..89d88ff 100644
--- a/lib/Sema/SemaTemplateInstantiateExpr.cpp
+++ b/lib/Sema/SemaTemplateInstantiateExpr.cpp
@@ -24,17 +24,14 @@
class VISIBILITY_HIDDEN TemplateExprInstantiator
: public StmtVisitor<TemplateExprInstantiator, Sema::OwningExprResult> {
Sema &SemaRef;
- const TemplateArgument *TemplateArgs;
- unsigned NumTemplateArgs;
+ const TemplateArgumentList &TemplateArgs;
public:
typedef Sema::OwningExprResult OwningExprResult;
TemplateExprInstantiator(Sema &SemaRef,
- const TemplateArgument *TemplateArgs,
- unsigned NumTemplateArgs)
- : SemaRef(SemaRef), TemplateArgs(TemplateArgs),
- NumTemplateArgs(NumTemplateArgs) { }
+ const TemplateArgumentList &TemplateArgs)
+ : SemaRef(SemaRef), TemplateArgs(TemplateArgs) { }
// FIXME: Once we get closer to completion, replace these
// manually-written declarations with automatically-generated ones
@@ -294,7 +291,7 @@
if (E->isArgumentType()) {
QualType T = E->getArgumentType();
if (T->isDependentType()) {
- T = SemaRef.InstantiateType(T, TemplateArgs, NumTemplateArgs,
+ T = SemaRef.InstantiateType(T, TemplateArgs,
/*FIXME*/E->getOperatorLoc(),
&SemaRef.PP.getIdentifierTable().get("sizeof"));
if (T.isNull())
@@ -324,7 +321,7 @@
NestedNameSpecifier *NNS
= SemaRef.InstantiateNestedNameSpecifier(E->getQualifier(),
E->getQualifierRange(),
- TemplateArgs, NumTemplateArgs);
+ TemplateArgs);
if (!NNS)
return SemaRef.ExprError();
@@ -348,7 +345,7 @@
CXXTemporaryObjectExpr *E) {
QualType T = E->getType();
if (T->isDependentType()) {
- T = SemaRef.InstantiateType(T, TemplateArgs, NumTemplateArgs,
+ T = SemaRef.InstantiateType(T, TemplateArgs,
E->getTypeBeginLoc(), DeclarationName());
if (T.isNull())
return SemaRef.ExprError();
@@ -413,8 +410,7 @@
}
Sema::OwningExprResult
-Sema::InstantiateExpr(Expr *E, const TemplateArgument *TemplateArgs,
- unsigned NumTemplateArgs) {
- TemplateExprInstantiator Instantiator(*this, TemplateArgs, NumTemplateArgs);
+Sema::InstantiateExpr(Expr *E, const TemplateArgumentList &TemplateArgs) {
+ TemplateExprInstantiator Instantiator(*this, TemplateArgs);
return Instantiator.Visit(E);
}