diff options
-rw-r--r-- | clang/lib/Sema/SemaTemplate.cpp | 1 | ||||
-rw-r--r-- | clang/test/Index/index-file.cpp | 13 |
2 files changed, 14 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaTemplate.cpp b/clang/lib/Sema/SemaTemplate.cpp index ad866a347e5..8621a2d42dc 100644 --- a/clang/lib/Sema/SemaTemplate.cpp +++ b/clang/lib/Sema/SemaTemplate.cpp @@ -5300,6 +5300,7 @@ Sema::ActOnClassTemplateSpecialization(Scope *S, unsigned TagSpec, } else if (TUK != TUK_Friend) { Diag(KWLoc, diag::err_template_spec_needs_header) << FixItHint::CreateInsertion(KWLoc, "template<> "); + TemplateKWLoc = KWLoc; isExplicitSpecialization = true; } diff --git a/clang/test/Index/index-file.cpp b/clang/test/Index/index-file.cpp index 7634c0db863..37b14a2715a 100644 --- a/clang/test/Index/index-file.cpp +++ b/clang/test/Index/index-file.cpp @@ -4,7 +4,20 @@ extern "C" { template < typename T > *Allocate() { } } +// rdar://14063074 +namespace rdar14063074 { +template <typename T> +struct TS {}; +struct TS<int> {}; + +template <typename T> +void tfoo() {} +void tfoo<int>() {} +} + // 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 |