From c093c1de2b505efc3a8d5cd332072493803fe913 Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Thu, 8 Oct 2009 01:19:17 +0000 Subject: [PATCH] Make sure to set the template specialization kind of an explicit template instantiation of a member function of a class template. FIXME -= 2; llvm-svn: 83520 --- clang/lib/Sema/SemaTemplate.cpp | 5 ----- clang/lib/Sema/SemaTemplateInstantiate.cpp | 6 +++--- clang/test/SemaTemplate/extern-templates.cpp | 3 +-- 3 files changed, 4 insertions(+), 10 deletions(-) diff --git a/clang/lib/Sema/SemaTemplate.cpp b/clang/lib/Sema/SemaTemplate.cpp index 339a084d7afb..9d3efa60b068 100644 --- a/clang/lib/Sema/SemaTemplate.cpp +++ b/clang/lib/Sema/SemaTemplate.cpp @@ -3651,11 +3651,6 @@ Sema::DeclResult Sema::ActOnExplicitInstantiation(Scope *S, InstantiateFunctionDefinition(D.getIdentifierLoc(), Specialization, false); - // FIXME: setTemplateSpecializationKind doesn't (yet) work for - // non-templated member functions. - if (!Specialization->getPrimaryTemplate()) - break; - Specialization->setTemplateSpecializationKind(TSK); break; } diff --git a/clang/lib/Sema/SemaTemplateInstantiate.cpp b/clang/lib/Sema/SemaTemplateInstantiate.cpp index e0ffca9d2d12..ee6600adc6a8 100644 --- a/clang/lib/Sema/SemaTemplateInstantiate.cpp +++ b/clang/lib/Sema/SemaTemplateInstantiate.cpp @@ -996,9 +996,9 @@ Sema::InstantiateClassMembers(SourceLocation PointOfInstantiation, Record->getInstantiatedFromMemberClass(), TemplateArgs, TSK); - else - InstantiateClassMembers(PointOfInstantiation, Record, TemplateArgs, - TSK); + + InstantiateClassMembers(PointOfInstantiation, Record, TemplateArgs, + TSK); } } } diff --git a/clang/test/SemaTemplate/extern-templates.cpp b/clang/test/SemaTemplate/extern-templates.cpp index 7154c7e32f9c..28fda1a11e6b 100644 --- a/clang/test/SemaTemplate/extern-templates.cpp +++ b/clang/test/SemaTemplate/extern-templates.cpp @@ -62,6 +62,5 @@ void g_X1(X1 x1, void *ptr) { extern template void X1::g(const void*); void g_X1_2(X1 x1, const void *ptr) { - // FIXME: This should not instantiate of x1::g -// x1.g(ptr); + x1.g(ptr); } -- GitLab