[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