summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST
diff options
context:
space:
mode:
authorEnea Zaffanella <zaffanella@cs.unipr.it>2013-08-10 07:24:53 +0000
committerEnea Zaffanella <zaffanella@cs.unipr.it>2013-08-10 07:24:53 +0000
commit6dbe18726282eddb548cf829554c491a8254326e (patch)
treeb244688df7cf17bcf2a2d49c849386e6eb7702ed /clang/lib/AST
parentb716b3ca1ff1fa66697a9506b9c347a4717b80e1 (diff)
downloadbcm5719-llvm-6dbe18726282eddb548cf829554c491a8254326e.tar.gz
bcm5719-llvm-6dbe18726282eddb548cf829554c491a8254326e.zip
Added source locs for angled parentheses in class/var template partial specs.
llvm-svn: 188134
Diffstat (limited to 'clang/lib/AST')
-rw-r--r--clang/lib/AST/DeclTemplate.cpp30
1 files changed, 11 insertions, 19 deletions
diff --git a/clang/lib/AST/DeclTemplate.cpp b/clang/lib/AST/DeclTemplate.cpp
index 555800a8bef..6e734a18c75 100644
--- a/clang/lib/AST/DeclTemplate.cpp
+++ b/clang/lib/AST/DeclTemplate.cpp
@@ -829,8 +829,7 @@ ClassTemplatePartialSpecializationDecl(ASTContext &Context, TagKind TK,
ClassTemplateDecl *SpecializedTemplate,
const TemplateArgument *Args,
unsigned NumArgs,
- TemplateArgumentLoc *ArgInfos,
- unsigned NumArgInfos,
+ const ASTTemplateArgumentListInfo *ArgInfos,
ClassTemplatePartialSpecializationDecl *PrevDecl,
unsigned SequenceNumber)
: ClassTemplateSpecializationDecl(Context,
@@ -839,9 +838,8 @@ ClassTemplatePartialSpecializationDecl(ASTContext &Context, TagKind TK,
SpecializedTemplate,
Args, NumArgs, PrevDecl),
TemplateParams(Params), ArgsAsWritten(ArgInfos),
- NumArgsAsWritten(NumArgInfos), SequenceNumber(SequenceNumber),
- InstantiatedFromMember(0, false)
-{
+ SequenceNumber(SequenceNumber), InstantiatedFromMember(0, false)
+{
AdoptTemplateParameterList(Params, this);
}
@@ -857,10 +855,8 @@ Create(ASTContext &Context, TagKind TK,DeclContext *DC,
QualType CanonInjectedType,
ClassTemplatePartialSpecializationDecl *PrevDecl,
unsigned SequenceNumber) {
- unsigned N = ArgInfos.size();
- TemplateArgumentLoc *ClonedArgs = new (Context) TemplateArgumentLoc[N];
- for (unsigned I = 0; I != N; ++I)
- ClonedArgs[I] = ArgInfos[I];
+ const ASTTemplateArgumentListInfo *ASTArgInfos =
+ ASTTemplateArgumentListInfo::Create(Context, ArgInfos);
ClassTemplatePartialSpecializationDecl *Result
= new (Context)ClassTemplatePartialSpecializationDecl(Context, TK, DC,
@@ -868,7 +864,7 @@ Create(ASTContext &Context, TagKind TK,DeclContext *DC,
Params,
SpecializedTemplate,
Args, NumArgs,
- ClonedArgs, N,
+ ASTArgInfos,
PrevDecl,
SequenceNumber);
Result->setSpecializationKind(TSK_ExplicitSpecialization);
@@ -1162,14 +1158,12 @@ VarTemplatePartialSpecializationDecl::VarTemplatePartialSpecializationDecl(
SourceLocation IdLoc, TemplateParameterList *Params,
VarTemplateDecl *SpecializedTemplate, QualType T, TypeSourceInfo *TInfo,
StorageClass S, const TemplateArgument *Args, unsigned NumArgs,
- TemplateArgumentLoc *ArgInfos, unsigned NumArgInfos,
- unsigned SequenceNumber)
+ const ASTTemplateArgumentListInfo *ArgInfos, unsigned SequenceNumber)
: VarTemplateSpecializationDecl(Context, VarTemplatePartialSpecialization,
DC, StartLoc, IdLoc, SpecializedTemplate, T,
TInfo, S, Args, NumArgs),
TemplateParams(Params), ArgsAsWritten(ArgInfos),
- NumArgsAsWritten(NumArgInfos), SequenceNumber(SequenceNumber),
- InstantiatedFromMember(0, false) {
+ SequenceNumber(SequenceNumber), InstantiatedFromMember(0, false) {
// TODO: The template parameters should be in DC by now. Verify.
// AdoptTemplateParameterList(Params, DC);
}
@@ -1181,15 +1175,13 @@ VarTemplatePartialSpecializationDecl::Create(
VarTemplateDecl *SpecializedTemplate, QualType T, TypeSourceInfo *TInfo,
StorageClass S, const TemplateArgument *Args, unsigned NumArgs,
const TemplateArgumentListInfo &ArgInfos, unsigned SequenceNumber) {
- unsigned N = ArgInfos.size();
- TemplateArgumentLoc *ClonedArgs = new (Context) TemplateArgumentLoc[N];
- for (unsigned I = 0; I != N; ++I)
- ClonedArgs[I] = ArgInfos[I];
+ const ASTTemplateArgumentListInfo *ASTArgInfos
+ = ASTTemplateArgumentListInfo::Create(Context, ArgInfos);
VarTemplatePartialSpecializationDecl *Result =
new (Context) VarTemplatePartialSpecializationDecl(
Context, DC, StartLoc, IdLoc, Params, SpecializedTemplate, T, TInfo,
- S, Args, NumArgs, ClonedArgs, N, SequenceNumber);
+ S, Args, NumArgs, ASTArgInfos, SequenceNumber);
Result->setSpecializationKind(TSK_ExplicitSpecialization);
return Result;
}
OpenPOWER on IntegriCloud