| 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 | B() = default; |
| 32 | B(int); |
| 33 | explicit B(double); |
| 34 | B(const B&); |
| 35 | B(B&&); |
| 36 | }; |
| 37 | |
| 38 | class C { |
| 39 | explicit C(const C&); |
| 40 | }; |
| 41 | |
| 42 | // RUN: c-index-test -index-file %s > %t |
| 43 | // RUN: FileCheck %s -input-file=%t |
| 44 | |
| 45 | // CHECK: [indexDeclaration]: kind: type-alias | name: MyTypeAlias | {{.*}} | loc: 1:7 |
| 46 | // CHECK: [indexDeclaration]: kind: struct-template-spec | name: TS | {{.*}} | loc: 11:8 |
| 47 | // CHECK: [indexDeclaration]: kind: function-template-spec | name: tfoo | {{.*}} | loc: 15:6 |
| 48 | // CHECK: [indexDeclaration]: kind: c++-instance-method | name: meth | {{.*}} | loc: 23:26 |
| 49 | // 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 |
| 50 | // 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 |
| 51 | // CHECK: [indexDeclaration]: kind: constructor | name: B | {{.*}} (default constructor) (defaulted) | loc: 31:3 |
| 52 | // CHECK: [indexDeclaration]: kind: constructor | name: B | {{.*}} (converting constructor) | loc: 32:3 |
| 53 | // CHECK: [indexDeclaration]: kind: constructor | name: B | {{.*}} | loc: 33:12 |
| 54 | // CHECK: [indexDeclaration]: kind: constructor | name: B | {{.*}} (copy constructor) (converting constructor) | loc: 34:3 |
| 55 | // CHECK: [indexDeclaration]: kind: constructor | name: B | {{.*}} (move constructor) (converting constructor) | loc: 35:3 |
| 56 | // CHECK: [indexDeclaration]: kind: constructor | name: C | {{.*}} (copy constructor) | loc: 39:12 |
| 57 | |