summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>2013-06-05 17:52:24 +0000
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>2013-06-05 17:52:24 +0000
commit6af41328be9a8328f993cde20eeea7174e665d2b (patch)
tree92bea38c9a37729e02a09344f0e3cf7d9bbfe01e /clang/test
parent4d90dba742fd0ec0f67dbd4d53c7e7213ce442ea (diff)
downloadbcm5719-llvm-6af41328be9a8328f993cde20eeea7174e665d2b.tar.gz
bcm5719-llvm-6af41328be9a8328f993cde20eeea7174e665d2b.zip
When the template specialization header is missing, set a valid source location for the template keyword when recovering.
Otherwise ClassTemplateSpecializationDecl::getSourceRange() will mistakenly consider itself as an implicit partial specialization and lead to a crash. Fixes rdar://14063074 llvm-svn: 183325
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/Index/index-file.cpp13
1 files changed, 13 insertions, 0 deletions
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
OpenPOWER on IntegriCloud