Home | History | Annotate | Download | only in Index
      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