Home | History | Annotate | Download | only in Index
      1 // Note: the run lines follow their respective tests, since line/column numbers
      2 // matter in this test.
      3 
      4 /// This is T1.
      5 template<typename T>
      6 void T1(T t) { }
      7 
      8 /// This is T2.
      9 template<typename T>
     10 void T2(T t) { }
     11 
     12 /// This is T2<int>.
     13 template<>
     14 void T2(int t) { }
     15 
     16 void test_CC1() {
     17 
     18 }
     19 
     20 // Check that implicit instantiations of class templates and members pick up
     21 // comments from class templates and specializations.
     22 
     23 /// This is T3.
     24 template<typename T>
     25 class T3 {
     26 public:
     27   /// This is T4.
     28   static void T4();
     29 
     30   /// This is T5.
     31   static int T5;
     32 
     33   /// This is T6.
     34   void T6();
     35 
     36   /// This is T7.
     37   int T7;
     38 
     39   /// This is T8.
     40   class T8 {};
     41 
     42   /// This is T9.
     43   enum T9 {
     44     /// This is T10.
     45     T10
     46   };
     47 
     48   /// This is T11.
     49   template<typename U>
     50   void T11(U t) {}
     51 
     52   typedef T3<double> T12;
     53 };
     54 
     55 void test_CC2_CC3_CC4() {
     56   T3<int>::T4();
     57   T3<int> t3;
     58   t3.T6();
     59   T3<int>::T8 t8;
     60 }
     61 
     62 /// This is T100.
     63 template<typename T, typename U>
     64 class T100 {
     65 };
     66 
     67 /// This is T100<int, T>.
     68 template<typename T>
     69 class T100<int, T> {
     70 public:
     71   /// This is T101.
     72   static void T101();
     73 
     74   /// This is T102.
     75   static int T102;
     76 
     77   /// This is T103.
     78   void T103();
     79 
     80   /// This is T104.
     81   int T104;
     82 
     83   /// This is T105.
     84   class T105 {};
     85 
     86   /// This is T106.
     87   enum T106 {
     88     /// This is T107.
     89     T107
     90   };
     91 
     92   /// This is T108.
     93   template<typename U>
     94   void T108(U t) {}
     95 
     96   typedef T100<double, T> T109;
     97 
     98   typedef T100<double, double> T110;
     99 };
    100 
    101 void test_CC5_CC6_CC7() {
    102   T100<int, long>::T101();
    103   T100<int, long> t100;
    104   t100.T103();
    105   T100<int, long>::T105 t105;
    106 }
    107 
    108 // RUN: env CINDEXTEST_COMPLETION_BRIEF_COMMENTS=1 c-index-test -code-completion-at=%s:17:1 %s | FileCheck -check-prefix=CHECK-CC1 %s
    109 // CHECK-CC1: FunctionTemplate:{ResultType void}{TypedText T1}{{.*}}(brief comment: This is T1.)
    110 // CHECK-CC1: FunctionTemplate:{ResultType void}{TypedText T2}{{.*}}(brief comment: This is T2.)
    111 
    112 // RUN: env CINDEXTEST_COMPLETION_BRIEF_COMMENTS=1 c-index-test -code-completion-at=%s:56:12 %s | FileCheck -check-prefix=CHECK-CC2 %s
    113 // CHECK-CC2: CXXMethod:{ResultType void}{TypedText T4}{{.*}}(brief comment: This is T4.)
    114 // CHECK-CC2: VarDecl:{ResultType int}{TypedText T5}{{.*}}(brief comment: This is T5.)
    115 
    116 // RUN: env CINDEXTEST_COMPLETION_BRIEF_COMMENTS=1 c-index-test -code-completion-at=%s:58:6 %s | FileCheck -check-prefix=CHECK-CC3 %s
    117 // CHECK-CC3: FunctionTemplate:{ResultType void}{TypedText T11}{{.*}}(brief comment: This is T11.)
    118 // CHECK-CC3: CXXMethod:{ResultType void}{TypedText T6}{{.*}}(brief comment: This is T6.)
    119 // CHECK-CC3: FieldDecl:{ResultType int}{TypedText T7}{{.*}}(brief comment: This is T7.)
    120 
    121 // RUN: env CINDEXTEST_COMPLETION_BRIEF_COMMENTS=1 c-index-test -code-completion-at=%s:59:12 %s | FileCheck -check-prefix=CHECK-CC4 %s
    122 // CHECK-CC4: EnumConstantDecl:{ResultType T3<int>::T9}{TypedText T10}{{.*}}(brief comment: This is T10.)
    123 // FIXME: after we implement propagating comments through typedefs, this
    124 // typedef for implicit instantiation should pick up the documentation
    125 // comment from class template.
    126 // CHECK-CC4: TypedefDecl:{TypedText T12}
    127 // CHECK-CC4-SHOULD-BE: TypedefDecl:{TypedText T12}{{.*}}(brief comment: This is T3.)
    128 // CHECK-CC4: ClassDecl:{TypedText T8}{{.*}}(brief comment: This is T8.)
    129 // CHECK-CC4: EnumDecl:{TypedText T9}{{.*}}(brief comment: This is T9.)
    130 
    131 // RUN: env CINDEXTEST_COMPLETION_BRIEF_COMMENTS=1 c-index-test -code-completion-at=%s:102:20 %s | FileCheck -check-prefix=CHECK-CC5 %s
    132 // CHECK-CC5: CXXMethod:{ResultType void}{TypedText T101}{{.*}}(brief comment: This is T101.)
    133 // CHECK-CC5: VarDecl:{ResultType int}{TypedText T102}{{.*}}(brief comment: This is T102.)
    134 
    135 // RUN: env CINDEXTEST_COMPLETION_BRIEF_COMMENTS=1 c-index-test -code-completion-at=%s:104:8 %s | FileCheck -check-prefix=CHECK-CC6 %s
    136 // CHECK-CC6: CXXMethod:{ResultType void}{TypedText T103}{{.*}}(brief comment: This is T103.)
    137 // CHECK-CC6: FieldDecl:{ResultType int}{TypedText T104}{{.*}}(brief comment: This is T104.)
    138 // CHECK-CC6: FunctionTemplate:{ResultType void}{TypedText T108}{{.*}}(brief comment: This is T108.)
    139 
    140 // RUN: env CINDEXTEST_COMPLETION_BRIEF_COMMENTS=1 c-index-test -code-completion-at=%s:105:20 %s | FileCheck -check-prefix=CHECK-CC7 %s
    141 // CHECK-CC7: ClassDecl:{TypedText T105}{{.*}}(brief comment: This is T105.)
    142 // CHECK-CC7: EnumDecl:{TypedText T106}{{.*}}(brief comment: This is T106.)
    143 // CHECK-CC7: EnumConstantDecl:{ResultType T100<int, long>::T106}{TypedText T107}{{.*}}(brief comment: This is T107.)
    144 // FIXME: after we implement propagating comments through typedefs, these two
    145 // typedefs for implicit instantiations should pick up the documentation
    146 // comment from class template.
    147 // CHECK-CC7: TypedefDecl:{TypedText T109}
    148 // CHECK-CC7: TypedefDecl:{TypedText T110}
    149 // CHECK-CC7-SHOULD-BE: TypedefDecl:{TypedText T109}{{.*}}(brief comment: This is T100.)
    150 // CHECK-CC7-SHOULD-BE: TypedefDecl:{TypedText T110}{{.*}}(brief comment: This is T100.)
    151 
    152