xref: /llvm-project/clang-tools-extra/test/clang-move/move-template-class.cpp (revision b53ec46773c5819ad70f4d63924f18c6a88965ee)
1*b53ec467SHaojian Wu // RUN: mkdir -p %T/move-template-class
2*b53ec467SHaojian Wu // RUN: cp %S/Inputs/template_class_test*  %T/move-template-class
3*b53ec467SHaojian Wu // RUN: cd %T/move-template-class
4*b53ec467SHaojian Wu // RUN: clang-move -names="A,B" -new_cc=%T/move-template-class/new_template_class_test.cpp -new_header=%T/move-template-class/new_template_class_test.h -old_cc=%T/move-template-class/template_class_test.cpp -old_header=../move-template-class/template_class_test.h %T/move-template-class/template_class_test.cpp --
5*b53ec467SHaojian Wu // RUN: FileCheck -input-file=%T/move-template-class/template_class_test.cpp -check-prefix=CHECK-OLD-TEST-EMPTY -allow-empty %s
6*b53ec467SHaojian Wu // RUN: FileCheck -input-file=%T/move-template-class/template_class_test.h -check-prefix=CHECK-OLD-TEST-EMPTY -allow-empty %s
7*b53ec467SHaojian Wu // RUN: FileCheck -input-file=%T/move-template-class/new_template_class_test.cpp -check-prefix=CHECK-NEW-TEST-CPP-CASE1 %s
8*b53ec467SHaojian Wu // RUN: FileCheck -input-file=%T/move-template-class/new_template_class_test.h -check-prefix=CHECK-NEW-TEST-H-CASE1 %s
9*b53ec467SHaojian Wu //
10*b53ec467SHaojian Wu // RUN: cp %S/Inputs/template_class_test*  %T/move-template-class
11*b53ec467SHaojian Wu // RUN: clang-move -names="A" -new_cc=%T/move-template-class/new_template_class_test.cpp -new_header=%T/move-template-class/new_template_class_test.h -old_cc=%T/move-template-class/template_class_test.cpp -old_header=../move-template-class/template_class_test.h %T/move-template-class/template_class_test.cpp --
12*b53ec467SHaojian Wu // RUN: FileCheck -input-file=%T/move-template-class/template_class_test.h -check-prefix=CHECK-OLD-TEST-H-CASE2 %s
13*b53ec467SHaojian Wu // RUN: FileCheck -input-file=%T/move-template-class/template_class_test.cpp -check-prefix=CHECK-OLD-TEST-CPP-CASE2 %s
14*b53ec467SHaojian Wu // RUN: FileCheck -input-file=%T/move-template-class/new_template_class_test.h -check-prefix=CHECK-NEW-TEST-H-CASE2 %s
15*b53ec467SHaojian Wu // RUN: FileCheck -input-file=%T/move-template-class/new_template_class_test.cpp -check-prefix=CHECK-NEW-TEST-CPP-CASE2 %s
16*b53ec467SHaojian Wu //
17*b53ec467SHaojian Wu //
18*b53ec467SHaojian Wu // CHECK-OLD-TEST-EMPTY: {{^}}{{$}}
19*b53ec467SHaojian Wu //
20*b53ec467SHaojian Wu // CHECK-NEW-TEST-H-CASE1: #ifndef TEMPLATE_CLASS_TEST_H // comment 1
21*b53ec467SHaojian Wu // CHECK-NEW-TEST-H-CASE1: #define TEMPLATE_CLASS_TEST_H
22*b53ec467SHaojian Wu // CHECK-NEW-TEST-H-CASE1: template <typename T>
23*b53ec467SHaojian Wu // CHECK-NEW-TEST-H-CASE1: class A {
24*b53ec467SHaojian Wu // CHECK-NEW-TEST-H-CASE1:  public:
25*b53ec467SHaojian Wu // CHECK-NEW-TEST-H-CASE1:   void f();
26*b53ec467SHaojian Wu // CHECK-NEW-TEST-H-CASE1:   void g();
27*b53ec467SHaojian Wu // CHECK-NEW-TEST-H-CASE1:   template <typename U> void h();
28*b53ec467SHaojian Wu // CHECK-NEW-TEST-H-CASE1:   template <typename U> void k();
29*b53ec467SHaojian Wu // CHECK-NEW-TEST-H-CASE1:   static int b;
30*b53ec467SHaojian Wu // CHECK-NEW-TEST-H-CASE1:   static int c;
31*b53ec467SHaojian Wu // CHECK-NEW-TEST-H-CASE1: };
32*b53ec467SHaojian Wu // CHECK-NEW-TEST-H-CASE1: template <typename T>
33*b53ec467SHaojian Wu // CHECK-NEW-TEST-H-CASE1: void A<T>::f() {}
34*b53ec467SHaojian Wu // CHECK-NEW-TEST-H-CASE1: template <typename T>
35*b53ec467SHaojian Wu // CHECK-NEW-TEST-H-CASE1: template <typename U>
36*b53ec467SHaojian Wu // CHECK-NEW-TEST-H-CASE1: void A<T>::h() {}
37*b53ec467SHaojian Wu // CHECK-NEW-TEST-H-CASE1: template <typename T>
38*b53ec467SHaojian Wu // CHECK-NEW-TEST-H-CASE1: int A<T>::b = 2;
39*b53ec467SHaojian Wu // CHECK-NEW-TEST-H-CASE1: class B {
40*b53ec467SHaojian Wu // CHECK-NEW-TEST-H-CASE1:  public:
41*b53ec467SHaojian Wu // CHECK-NEW-TEST-H-CASE1:   void f();
42*b53ec467SHaojian Wu // CHECK-NEW-TEST-H-CASE1: };
43*b53ec467SHaojian Wu // CHECK-NEW-TEST-H-CASE1: #endif // TEMPLATE_CLASS_TEST_H
44*b53ec467SHaojian Wu //
45*b53ec467SHaojian Wu // CHECK-NEW-TEST-CPP-CASE1: #include "{{.*}}new_template_class_test.h"
46*b53ec467SHaojian Wu // CHECK-NEW-TEST-CPP-CASE1: template <typename T>
47*b53ec467SHaojian Wu // CHECK-NEW-TEST-CPP-CASE1: void A<T>::g() {}
48*b53ec467SHaojian Wu // CHECK-NEW-TEST-CPP-CASE1: template <typename T>
49*b53ec467SHaojian Wu // CHECK-NEW-TEST-CPP-CASE1: template <typename U>
50*b53ec467SHaojian Wu // CHECK-NEW-TEST-CPP-CASE1: void A<T>::k() {}
51*b53ec467SHaojian Wu // CHECK-NEW-TEST-CPP-CASE1: template <typename T>
52*b53ec467SHaojian Wu // CHECK-NEW-TEST-CPP-CASE1: int A<T>::c = 2;
53*b53ec467SHaojian Wu // CHECK-NEW-TEST-CPP-CASE1: void B::f() {}
54*b53ec467SHaojian Wu //
55*b53ec467SHaojian Wu // CHECK-OLD-TEST-H-CASE2: #ifndef TEMPLATE_CLASS_TEST_H // comment 1
56*b53ec467SHaojian Wu // CHECK-OLD-TEST-H-CASE2: #define TEMPLATE_CLASS_TEST_H
57*b53ec467SHaojian Wu // CHECK-OLD-TEST-H-CASE2: class B {
58*b53ec467SHaojian Wu // CHECK-OLD-TEST-H-CASE2:  public:
59*b53ec467SHaojian Wu // CHECK-OLD-TEST-H-CASE2:   void f();
60*b53ec467SHaojian Wu // CHECK-OLD-TEST-H-CASE2: };
61*b53ec467SHaojian Wu // CHECK-OLD-TEST-H-CASE2: #endif // TEMPLATE_CLASS_TEST_H
62*b53ec467SHaojian Wu //
63*b53ec467SHaojian Wu // CHECK-OLD-TEST-CPP-CASE2: #include "template_class_test.h"
64*b53ec467SHaojian Wu // CHECK-OLD-TEST-CPP-CASE2:  void B::f() {}
65*b53ec467SHaojian Wu //
66*b53ec467SHaojian Wu // CHECK-NEW-TEST-H-CASE2: #ifndef {{.*}}NEW_TEMPLATE_CLASS_TEST_H
67*b53ec467SHaojian Wu // CHECK-NEW-TEST-H-CASE2: #define {{.*}}NEW_TEMPLATE_CLASS_TEST_H
68*b53ec467SHaojian Wu // CHECK-NEW-TEST-H-CASE2: template <typename T>
69*b53ec467SHaojian Wu // CHECK-NEW-TEST-H-CASE2: class A {
70*b53ec467SHaojian Wu // CHECK-NEW-TEST-H-CASE2:  public:
71*b53ec467SHaojian Wu // CHECK-NEW-TEST-H-CASE2:   void f();
72*b53ec467SHaojian Wu // CHECK-NEW-TEST-H-CASE2:   void g();
73*b53ec467SHaojian Wu // CHECK-NEW-TEST-H-CASE2:   template <typename U> void h();
74*b53ec467SHaojian Wu // CHECK-NEW-TEST-H-CASE2:   template <typename U> void k();
75*b53ec467SHaojian Wu // CHECK-NEW-TEST-H-CASE2:   static int b;
76*b53ec467SHaojian Wu // CHECK-NEW-TEST-H-CASE2:   static int c;
77*b53ec467SHaojian Wu // CHECK-NEW-TEST-H-CASE2: };
78*b53ec467SHaojian Wu // CHECK-NEW-TEST-H-CASE2: template <typename T> void A<T>::f() {}
79*b53ec467SHaojian Wu // CHECK-NEW-TEST-H-CASE2: template <typename T> template <typename U> void A<T>::h() {}
80*b53ec467SHaojian Wu // CHECK-NEW-TEST-H-CASE2: template <typename T> int A<T>::b = 2;
81*b53ec467SHaojian Wu // CHECK-NEW-TEST-H-CASE2: #endif // {{.*}}NEW_TEMPLATE_CLASS_TEST_H
82*b53ec467SHaojian Wu //
83*b53ec467SHaojian Wu // CHECK-NEW-TEST-CPP-CASE2: #include "{{.*}}new_template_class_test.h"
84*b53ec467SHaojian Wu // CHECK-NEW-TEST-CPP-CASE2: template <typename T> void A<T>::g() {}
85*b53ec467SHaojian Wu // CHECK-NEW-TEST-CPP-CASE2: template <typename T> template <typename U> void A<T>::k() {}
86*b53ec467SHaojian Wu // CHECK-NEW-TEST-CPP-CASE2: template <typename T> int A<T>::c = 2;
87