[cfe-commits] r72918 - in /cfe/trunk: include/clang/AST/DeclTemplate.h lib/AST/DeclTemplate.cpp lib/Sema/SemaTemplate.cpp lib/Sema/SemaTemplateDeduction.cpp

Douglas Gregor dgregor at apple.com
Thu Jun 4 22:38:15 PDT 2009


Thanks!

Sent from my iPhone

On Jun 4, 2009, at 10:31 PM, Anders Carlsson <andersca at mac.com> wrote:

> Author: andersca
> Date: Fri Jun  5 00:31:27 2009
> New Revision: 72918
>
> URL: http://llvm.org/viewvc/llvm-project?rev=72918&view=rev
> Log:
> Make TemplateArgumentListBuilder take an ASTContext (because we're  
> probably going to need it later). Move push_back to the .cpp file.  
> If the passed in template argument is a type, assert that it's  
> canonical.
>
> Modified:
>    cfe/trunk/include/clang/AST/DeclTemplate.h
>    cfe/trunk/lib/AST/DeclTemplate.cpp
>    cfe/trunk/lib/Sema/SemaTemplate.cpp
>    cfe/trunk/lib/Sema/SemaTemplateDeduction.cpp
>
> Modified: cfe/trunk/include/clang/AST/DeclTemplate.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/DeclTemplate.h?rev=72918&r1=72917&r2=72918&view=diff
>
> === 
> === 
> === 
> =====================================================================
> --- cfe/trunk/include/clang/AST/DeclTemplate.h (original)
> +++ cfe/trunk/include/clang/AST/DeclTemplate.h Fri Jun  5 00:31:27  
> 2009
> @@ -577,14 +577,16 @@
> class TemplateArgumentListBuilder {
>   llvm::SmallVector<TemplateArgument, 16> Args;
>
> +  ASTContext &Context;
> public:
> +  TemplateArgumentListBuilder(ASTContext &Context) : Context 
> (Context) { }
> +
>   // FIXME: Should use the  index array size.
>   size_t size() const { return Args.size(); }
> -
>   size_t flatSize() const { return Args.size(); }
> -
> +
> +  void push_back(const TemplateArgument& Arg);
>   TemplateArgument *getFlatArgumentList() { return Args.data(); }
> -  void push_back(const TemplateArgument& Arg) { Args.push_back 
> (Arg); }
> };
>
> /// \brief A template argument list.
>
> Modified: cfe/trunk/lib/AST/DeclTemplate.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/DeclTemplate.cpp?rev=72918&r1=72917&r2=72918&view=diff
>
> === 
> === 
> === 
> =====================================================================
> --- cfe/trunk/lib/AST/DeclTemplate.cpp (original)
> +++ cfe/trunk/lib/AST/DeclTemplate.cpp Fri Jun  5 00:31:27 2009
> @@ -236,6 +236,19 @@
> }
>
> // 
> === 
> --- 
> ------------------------------------------------------------------- 
> ===//
> +// TemplateArgumentListBuilder Implementation
> +// 
> === 
> --- 
> ------------------------------------------------------------------- 
> ===//
> +void TemplateArgumentListBuilder::push_back(const TemplateArgument&  
> Arg) {
> +  switch (Arg.getKind()) {
> +  case TemplateArgument::Type:
> +    assert(Arg.getAsType()->isCanonical() && "Type must be  
> canonical!");
> +    break;
> +  }
> +
> +  Args.push_back(Arg);
> +}
> +
> +// 
> === 
> --- 
> ------------------------------------------------------------------- 
> ===//
> // TemplateArgumentList Implementation
> // 
> === 
> --- 
> ------------------------------------------------------------------- 
> ===//
> TemplateArgumentList::TemplateArgumentList(ASTContext &Context,
>
> Modified: cfe/trunk/lib/Sema/SemaTemplate.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaTemplate.cpp?rev=72918&r1=72917&r2=72918&view=diff
>
> === 
> === 
> === 
> =====================================================================
> --- cfe/trunk/lib/Sema/SemaTemplate.cpp (original)
> +++ cfe/trunk/lib/Sema/SemaTemplate.cpp Fri Jun  5 00:31:27 2009
> @@ -811,7 +811,7 @@
>
>   // Check that the template argument list is well-formed for this
>   // template.
> -  TemplateArgumentListBuilder ConvertedTemplateArgs;
> +  TemplateArgumentListBuilder ConvertedTemplateArgs(Context);
>   if (CheckTemplateArgumentList(Template, TemplateLoc, LAngleLoc,
>                                 TemplateArgs, NumTemplateArgs,  
> RAngleLoc,
>                                 ConvertedTemplateArgs))
> @@ -2064,7 +2064,7 @@
>
>   // Check that the template argument list is well-formed for this
>   // template.
> -  TemplateArgumentListBuilder ConvertedTemplateArgs;
> +  TemplateArgumentListBuilder ConvertedTemplateArgs(Context);
>   if (CheckTemplateArgumentList(ClassTemplate, TemplateNameLoc,  
> LAngleLoc,
>                                 &TemplateArgs[0], TemplateArgs.size(),
>                                 RAngleLoc, ConvertedTemplateArgs))
> @@ -2268,7 +2268,7 @@
>
>   // Check that the template argument list is well-formed for this
>   // template.
> -  TemplateArgumentListBuilder ConvertedTemplateArgs;
> +  TemplateArgumentListBuilder ConvertedTemplateArgs(Context);
>   if (CheckTemplateArgumentList(ClassTemplate, TemplateNameLoc,  
> LAngleLoc,
>                                 TemplateArgs.data(),  
> TemplateArgs.size(),
>                                 RAngleLoc, ConvertedTemplateArgs))
>
> Modified: cfe/trunk/lib/Sema/SemaTemplateDeduction.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaTemplateDeduction.cpp?rev=72918&r1=72917&r2=72918&view=diff
>
> === 
> === 
> === 
> =====================================================================
> --- cfe/trunk/lib/Sema/SemaTemplateDeduction.cpp (original)
> +++ cfe/trunk/lib/Sema/SemaTemplateDeduction.cpp Fri Jun  5 00:31:27  
> 2009
> @@ -386,7 +386,7 @@
>
>   // FIXME: This is terrible. DeduceTemplateArguments should use a
>   // TemplateArgumentListBuilder directly.
> -  TemplateArgumentListBuilder Builder;
> +  TemplateArgumentListBuilder Builder(Context);
>   for (unsigned I = 0, N = Deduced.size(); I != N; ++I)
>     Builder.push_back(Deduced[I]);
>
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits



More information about the cfe-commits mailing list