1754a5d14d58213beb0502720e66fef8fa86a21cfArgyrios Kyrtzidisusing MyTypeAlias = int;
2754a5d14d58213beb0502720e66fef8fa86a21cfArgyrios Kyrtzidis
31f12c47ae90c03633496d96e79a61762097a4681Argyrios Kyrtzidisextern "C" {
41f12c47ae90c03633496d96e79a61762097a4681Argyrios Kyrtzidis  template < typename T > *Allocate() { }
51f12c47ae90c03633496d96e79a61762097a4681Argyrios Kyrtzidis}
61f12c47ae90c03633496d96e79a61762097a4681Argyrios Kyrtzidis
7d62d9015c76d4e7dee1fddd9603b92098b355e15Argyrios Kyrtzidis// rdar://14063074
8d62d9015c76d4e7dee1fddd9603b92098b355e15Argyrios Kyrtzidisnamespace rdar14063074 {
9d62d9015c76d4e7dee1fddd9603b92098b355e15Argyrios Kyrtzidistemplate <typename T>
10d62d9015c76d4e7dee1fddd9603b92098b355e15Argyrios Kyrtzidisstruct TS {};
11d62d9015c76d4e7dee1fddd9603b92098b355e15Argyrios Kyrtzidisstruct TS<int> {};
12d62d9015c76d4e7dee1fddd9603b92098b355e15Argyrios Kyrtzidis
13d62d9015c76d4e7dee1fddd9603b92098b355e15Argyrios Kyrtzidistemplate <typename T>
14d62d9015c76d4e7dee1fddd9603b92098b355e15Argyrios Kyrtzidisvoid tfoo() {}
15d62d9015c76d4e7dee1fddd9603b92098b355e15Argyrios Kyrtzidisvoid tfoo<int>() {}
16d62d9015c76d4e7dee1fddd9603b92098b355e15Argyrios Kyrtzidis}
17d62d9015c76d4e7dee1fddd9603b92098b355e15Argyrios Kyrtzidis
18754a5d14d58213beb0502720e66fef8fa86a21cfArgyrios Kyrtzidis// RUN: c-index-test -index-file %s > %t
19754a5d14d58213beb0502720e66fef8fa86a21cfArgyrios Kyrtzidis// RUN: FileCheck %s -input-file=%t
20754a5d14d58213beb0502720e66fef8fa86a21cfArgyrios Kyrtzidis
21754a5d14d58213beb0502720e66fef8fa86a21cfArgyrios Kyrtzidis// CHECK: [indexDeclaration]: kind: type-alias | name: MyTypeAlias | {{.*}} | loc: 1:7
22d62d9015c76d4e7dee1fddd9603b92098b355e15Argyrios Kyrtzidis// CHECK: [indexDeclaration]: kind: struct-template-spec | name: TS | {{.*}} | loc: 11:8
23d62d9015c76d4e7dee1fddd9603b92098b355e15Argyrios Kyrtzidis// CHECK: [indexDeclaration]: kind: function-template-spec | name: tfoo | {{.*}} | loc: 15:6
24