1 using MyTypeAlias = int; 2 3 extern "C" { 4 template < typename T > *Allocate() { } 5 } 6 7 // rdar://14063074 8 namespace rdar14063074 { 9 template <typename T> 10 struct TS {}; 11 struct TS<int> {}; 12 13 template <typename T> 14 void tfoo() {} 15 void tfoo<int>() {} 16 } 17 18 namespace crash1 { 19 template<typename T> class A { 20 A(A &) = delete; 21 void meth(); 22 }; 23 template <> void A<int>::meth(); 24 template class A<int>; 25 } 26 27 class B { 28 mutable int x_; 29 int y_; 30 }; 31 // RUN: c-index-test -index-file %s > %t 32 // RUN: FileCheck %s -input-file=%t 33 34 // CHECK: [indexDeclaration]: kind: type-alias | name: MyTypeAlias | {{.*}} | loc: 1:7 35 // CHECK: [indexDeclaration]: kind: struct-template-spec | name: TS | {{.*}} | loc: 11:8 36 // CHECK: [indexDeclaration]: kind: function-template-spec | name: tfoo | {{.*}} | loc: 15:6 37 // CHECK: [indexDeclaration]: kind: c++-instance-method | name: meth | {{.*}} | loc: 23:26 38 // CHECK: [indexDeclaration]: kind: field | name: x_ | USR: c:@S@B@FI@x_ | lang: C++ | cursor: FieldDecl=x_:28:15 (Definition) (mutable) | loc: 28:15 | semantic-container: [B:27:7] | lexical-container: [B:27:7] | isRedecl: 0 | isDef: 1 | isContainer: 0 | isImplicit: 0 39 // CHECK: [indexDeclaration]: kind: field | name: y_ | USR: c:@S@B@FI@y_ | lang: C++ | cursor: FieldDecl=y_:29:7 (Definition) | loc: 29:7 | semantic-container: [B:27:7] | lexical-container: [B:27:7] | isRedecl: 0 | isDef: 1 | isContainer: 0 | isImplicit: 0 40