From: Argyrios Kyrtzidis Date: Fri, 11 Sep 2015 01:44:56 +0000 (+0000) Subject: [sema] Fix assertion hit when using libclang to index a particular C++ snippet involv... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4c5c1f9ac023d9f374124a313d616960832dac9a;p=clang [sema] Fix assertion hit when using libclang to index a particular C++ snippet involving templates. Assertion hit was in ClassTemplateSpecializationDecl::getSourceRange(). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@247373 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/SemaTemplate.cpp b/lib/Sema/SemaTemplate.cpp index 527005094c..b5b8b1ea8a 100644 --- a/lib/Sema/SemaTemplate.cpp +++ b/lib/Sema/SemaTemplate.cpp @@ -7386,11 +7386,16 @@ Sema::ActOnExplicitInstantiation(Scope *S, } } + // Set the template specialization kind. Make sure it is set before + // instantiating the members which will trigger ASTConsumer callbacks. + Specialization->setTemplateSpecializationKind(TSK); InstantiateClassTemplateSpecializationMembers(TemplateNameLoc, Def, TSK); + } else { + + // Set the template specialization kind. + Specialization->setTemplateSpecializationKind(TSK); } - // Set the template specialization kind. - Specialization->setTemplateSpecializationKind(TSK); return Specialization; } diff --git a/test/Index/index-file.cpp b/test/Index/index-file.cpp index 37b14a2715..d42b4b2de7 100644 --- a/test/Index/index-file.cpp +++ b/test/Index/index-file.cpp @@ -15,9 +15,19 @@ void tfoo() {} void tfoo() {} } +namespace crash1 { +template class A { + A(A &) = delete; + void meth(); +}; +template <> void A::meth(); +template class A; +} + // RUN: c-index-test -index-file %s > %t // RUN: FileCheck %s -input-file=%t // CHECK: [indexDeclaration]: kind: type-alias | name: MyTypeAlias | {{.*}} | loc: 1:7 // CHECK: [indexDeclaration]: kind: struct-template-spec | name: TS | {{.*}} | loc: 11:8 // CHECK: [indexDeclaration]: kind: function-template-spec | name: tfoo | {{.*}} | loc: 15:6 +// CHECK: [indexDeclaration]: kind: c++-instance-method | name: meth | {{.*}} | loc: 23:26