diff options
| author | Abramo Bagnara <abramo.bagnara@gmail.com> | 2010-06-12 08:15:14 +0000 | 
|---|---|---|
| committer | Abramo Bagnara <abramo.bagnara@gmail.com> | 2010-06-12 08:15:14 +0000 | 
| commit | da41d0cf5b8d5ea65f2a7aa7bbf1d9e706743659 (patch) | |
| tree | 83a5d719932ff07e31e045e7b06210f59e8fe12a /clang/lib/Sema/SemaTemplate.cpp | |
| parent | 7dacc95299399ba41de26fbd1e848e2557956a68 (diff) | |
| download | bcm5719-llvm-da41d0cf5b8d5ea65f2a7aa7bbf1d9e706743659.tar.gz bcm5719-llvm-da41d0cf5b8d5ea65f2a7aa7bbf1d9e706743659.zip | |
Added template parameters info for out-of-line definitions of class template methods.
llvm-svn: 105882
Diffstat (limited to 'clang/lib/Sema/SemaTemplate.cpp')
| -rw-r--r-- | clang/lib/Sema/SemaTemplate.cpp | 13 | 
1 files changed, 13 insertions, 0 deletions
| diff --git a/clang/lib/Sema/SemaTemplate.cpp b/clang/lib/Sema/SemaTemplate.cpp index 44e3a40245a..6be74a08978 100644 --- a/clang/lib/Sema/SemaTemplate.cpp +++ b/clang/lib/Sema/SemaTemplate.cpp @@ -3666,6 +3666,10 @@ Sema::ActOnClassTemplateSpecialization(Scope *S, unsigned TagSpec,                                                TemplateParameterLists.size(),                                                TUK == TUK_Friend,                                                isExplicitSpecialization); +  unsigned NumMatchedTemplateParamLists = TemplateParameterLists.size(); +  if (TemplateParams) +    --NumMatchedTemplateParamLists; +    if (TemplateParams && TemplateParams->size() > 0) {      isPartialSpecialization = true; @@ -3857,6 +3861,10 @@ Sema::ActOnClassTemplateSpecialization(Scope *S, unsigned TagSpec,                                                         PrevPartial,                                                         SequenceNumber);      SetNestedNameSpecifier(Partial, SS); +    if (NumMatchedTemplateParamLists > 0) { +      Partial->setTemplateParameterListsInfo(NumMatchedTemplateParamLists, +                    (TemplateParameterList**) TemplateParameterLists.release()); +    }      if (PrevPartial) {        ClassTemplate->getPartialSpecializations().RemoveNode(PrevPartial); @@ -3914,6 +3922,11 @@ Sema::ActOnClassTemplateSpecialization(Scope *S, unsigned TagSpec,                                                  Converted,                                                  PrevDecl);      SetNestedNameSpecifier(Specialization, SS); +    if (NumMatchedTemplateParamLists > 0) { +      Specialization->setTemplateParameterListsInfo( +                    NumMatchedTemplateParamLists, +                    (TemplateParameterList**) TemplateParameterLists.release()); +    }      if (PrevDecl) {        ClassTemplate->getSpecializations().RemoveNode(PrevDecl); | 

