diff options
| author | Douglas Gregor <dgregor@apple.com> | 2009-05-11 23:53:27 +0000 | 
|---|---|---|
| committer | Douglas Gregor <dgregor@apple.com> | 2009-05-11 23:53:27 +0000 | 
| commit | d002c7bc5889d23f8039b15aef3c38bc2db885e3 (patch) | |
| tree | ac98e6e6050218aec7d1cf22075e734a99270b7d /clang/lib/Sema/SemaTemplateInstantiateExpr.cpp | |
| parent | 5fb7847fbff1c8808e589426ebacabf11339f07c (diff) | |
| download | bcm5719-llvm-d002c7bc5889d23f8039b15aef3c38bc2db885e3.tar.gz bcm5719-llvm-d002c7bc5889d23f8039b15aef3c38bc2db885e3.zip | |
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.
llvm-svn: 71517
Diffstat (limited to 'clang/lib/Sema/SemaTemplateInstantiateExpr.cpp')
| -rw-r--r-- | clang/lib/Sema/SemaTemplateInstantiateExpr.cpp | 20 | 
1 files changed, 8 insertions, 12 deletions
| diff --git a/clang/lib/Sema/SemaTemplateInstantiateExpr.cpp b/clang/lib/Sema/SemaTemplateInstantiateExpr.cpp index 5476ad3502b..89d88ff76ec 100644 --- a/clang/lib/Sema/SemaTemplateInstantiateExpr.cpp +++ b/clang/lib/Sema/SemaTemplateInstantiateExpr.cpp @@ -24,17 +24,14 @@ namespace {    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 @@ TemplateExprInstantiator::VisitSizeOfAlignOfExpr(SizeOfAlignOfExpr *E) {    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 @@ TemplateExprInstantiator::VisitUnresolvedDeclRefExpr(UnresolvedDeclRefExpr *E) {    NestedNameSpecifier *NNS       = SemaRef.InstantiateNestedNameSpecifier(E->getQualifier(),                                                E->getQualifierRange(), -                                             TemplateArgs, NumTemplateArgs); +                                             TemplateArgs);    if (!NNS)      return SemaRef.ExprError(); @@ -348,7 +345,7 @@ TemplateExprInstantiator::VisitCXXTemporaryObjectExpr(                                                    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 TemplateExprInstantiator::VisitImplicitCastExpr(  }  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);  } | 

