diff options
author | Haojian Wu <hokein@google.com> | 2016-11-10 05:33:26 +0000 |
---|---|---|
committer | Haojian Wu <hokein@google.com> | 2016-11-10 05:33:26 +0000 |
commit | c96f249b06d6e709c3c5d21cc6464824217282dd (patch) | |
tree | f9e5b1494febe9d70cb43c470527202f50b3dcee /clang-tools-extra/test/clang-move | |
parent | 878daa7aec72cc15c92f174762ba352737100e78 (diff) |
[clang-move] Support template class.
Reviewers: ioeric
Subscribers: cfe-commits
Differential Revision: https://reviews.llvm.org/D26423
Diffstat (limited to 'clang-tools-extra/test/clang-move')
3 files changed, 129 insertions, 0 deletions
diff --git a/clang-tools-extra/test/clang-move/Inputs/template_class_test.cpp b/clang-tools-extra/test/clang-move/Inputs/template_class_test.cpp new file mode 100644 index 00000000000..8ad2dcb1eda --- /dev/null +++ b/clang-tools-extra/test/clang-move/Inputs/template_class_test.cpp @@ -0,0 +1,13 @@ +#include "template_class_test.h" + +template <typename T> +void A<T>::g() {} + +template <typename T> +template <typename U> +void A<T>::k() {} + +template <typename T> +int A<T>::c = 2; + +void B::f() {} diff --git a/clang-tools-extra/test/clang-move/Inputs/template_class_test.h b/clang-tools-extra/test/clang-move/Inputs/template_class_test.h new file mode 100644 index 00000000000..d42a158a6f9 --- /dev/null +++ b/clang-tools-extra/test/clang-move/Inputs/template_class_test.h @@ -0,0 +1,30 @@ +#ifndef TEMPLATE_CLASS_TEST_H // comment 1 +#define TEMPLATE_CLASS_TEST_H + +template <typename T> +class A { + public: + void f(); + void g(); + template <typename U> void h(); + template <typename U> void k(); + static int b; + static int c; +}; + +template <typename T> +void A<T>::f() {} + +template <typename T> +template <typename U> +void A<T>::h() {} + +template <typename T> +int A<T>::b = 2; + +class B { + public: + void f(); +}; + +#endif // TEMPLATE_CLASS_TEST_H diff --git a/clang-tools-extra/test/clang-move/move-template-class.cpp b/clang-tools-extra/test/clang-move/move-template-class.cpp new file mode 100644 index 00000000000..1a6a60bd2bd --- /dev/null +++ b/clang-tools-extra/test/clang-move/move-template-class.cpp @@ -0,0 +1,86 @@ +// RUN: mkdir -p %T/move-template-class +// RUN: cp %S/Inputs/template_class_test* %T/move-template-class +// RUN: cd %T/move-template-class +// 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 -- +// RUN: FileCheck -input-file=%T/move-template-class/template_class_test.cpp -check-prefix=CHECK-OLD-TEST-EMPTY -allow-empty %s +// RUN: FileCheck -input-file=%T/move-template-class/template_class_test.h -check-prefix=CHECK-OLD-TEST-EMPTY -allow-empty %s +// RUN: FileCheck -input-file=%T/move-template-class/new_template_class_test.cpp -check-prefix=CHECK-NEW-TEST-CPP-CASE1 %s +// RUN: FileCheck -input-file=%T/move-template-class/new_template_class_test.h -check-prefix=CHECK-NEW-TEST-H-CASE1 %s +// +// RUN: cp %S/Inputs/template_class_test* %T/move-template-class +// 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 -- +// RUN: FileCheck -input-file=%T/move-template-class/template_class_test.h -check-prefix=CHECK-OLD-TEST-H-CASE2 %s +// RUN: FileCheck -input-file=%T/move-template-class/template_class_test.cpp -check-prefix=CHECK-OLD-TEST-CPP-CASE2 %s +// RUN: FileCheck -input-file=%T/move-template-class/new_template_class_test.h -check-prefix=CHECK-NEW-TEST-H-CASE2 %s +// RUN: FileCheck -input-file=%T/move-template-class/new_template_class_test.cpp -check-prefix=CHECK-NEW-TEST-CPP-CASE2 %s +// +// +// CHECK-OLD-TEST-EMPTY: {{^}}{{$}} +// +// CHECK-NEW-TEST-H-CASE1: #ifndef TEMPLATE_CLASS_TEST_H // comment 1 +// CHECK-NEW-TEST-H-CASE1: #define TEMPLATE_CLASS_TEST_H +// CHECK-NEW-TEST-H-CASE1: template <typename T> +// CHECK-NEW-TEST-H-CASE1: class A { +// CHECK-NEW-TEST-H-CASE1: public: +// CHECK-NEW-TEST-H-CASE1: void f(); +// CHECK-NEW-TEST-H-CASE1: void g(); +// CHECK-NEW-TEST-H-CASE1: template <typename U> void h(); +// CHECK-NEW-TEST-H-CASE1: template <typename U> void k(); +// CHECK-NEW-TEST-H-CASE1: static int b; +// CHECK-NEW-TEST-H-CASE1: static int c; +// CHECK-NEW-TEST-H-CASE1: }; +// CHECK-NEW-TEST-H-CASE1: template <typename T> +// CHECK-NEW-TEST-H-CASE1: void A<T>::f() {} +// CHECK-NEW-TEST-H-CASE1: template <typename T> +// CHECK-NEW-TEST-H-CASE1: template <typename U> +// CHECK-NEW-TEST-H-CASE1: void A<T>::h() {} +// CHECK-NEW-TEST-H-CASE1: template <typename T> +// CHECK-NEW-TEST-H-CASE1: int A<T>::b = 2; +// CHECK-NEW-TEST-H-CASE1: class B { +// CHECK-NEW-TEST-H-CASE1: public: +// CHECK-NEW-TEST-H-CASE1: void f(); +// CHECK-NEW-TEST-H-CASE1: }; +// CHECK-NEW-TEST-H-CASE1: #endif // TEMPLATE_CLASS_TEST_H +// +// CHECK-NEW-TEST-CPP-CASE1: #include "{{.*}}new_template_class_test.h" +// CHECK-NEW-TEST-CPP-CASE1: template <typename T> +// CHECK-NEW-TEST-CPP-CASE1: void A<T>::g() {} +// CHECK-NEW-TEST-CPP-CASE1: template <typename T> +// CHECK-NEW-TEST-CPP-CASE1: template <typename U> +// CHECK-NEW-TEST-CPP-CASE1: void A<T>::k() {} +// CHECK-NEW-TEST-CPP-CASE1: template <typename T> +// CHECK-NEW-TEST-CPP-CASE1: int A<T>::c = 2; +// CHECK-NEW-TEST-CPP-CASE1: void B::f() {} +// +// CHECK-OLD-TEST-H-CASE2: #ifndef TEMPLATE_CLASS_TEST_H // comment 1 +// CHECK-OLD-TEST-H-CASE2: #define TEMPLATE_CLASS_TEST_H +// CHECK-OLD-TEST-H-CASE2: class B { +// CHECK-OLD-TEST-H-CASE2: public: +// CHECK-OLD-TEST-H-CASE2: void f(); +// CHECK-OLD-TEST-H-CASE2: }; +// CHECK-OLD-TEST-H-CASE2: #endif // TEMPLATE_CLASS_TEST_H +// +// CHECK-OLD-TEST-CPP-CASE2: #include "template_class_test.h" +// CHECK-OLD-TEST-CPP-CASE2: void B::f() {} +// +// CHECK-NEW-TEST-H-CASE2: #ifndef {{.*}}NEW_TEMPLATE_CLASS_TEST_H +// CHECK-NEW-TEST-H-CASE2: #define {{.*}}NEW_TEMPLATE_CLASS_TEST_H +// CHECK-NEW-TEST-H-CASE2: template <typename T> +// CHECK-NEW-TEST-H-CASE2: class A { +// CHECK-NEW-TEST-H-CASE2: public: +// CHECK-NEW-TEST-H-CASE2: void f(); +// CHECK-NEW-TEST-H-CASE2: void g(); +// CHECK-NEW-TEST-H-CASE2: template <typename U> void h(); +// CHECK-NEW-TEST-H-CASE2: template <typename U> void k(); +// CHECK-NEW-TEST-H-CASE2: static int b; +// CHECK-NEW-TEST-H-CASE2: static int c; +// CHECK-NEW-TEST-H-CASE2: }; +// CHECK-NEW-TEST-H-CASE2: template <typename T> void A<T>::f() {} +// CHECK-NEW-TEST-H-CASE2: template <typename T> template <typename U> void A<T>::h() {} +// CHECK-NEW-TEST-H-CASE2: template <typename T> int A<T>::b = 2; +// CHECK-NEW-TEST-H-CASE2: #endif // {{.*}}NEW_TEMPLATE_CLASS_TEST_H +// +// CHECK-NEW-TEST-CPP-CASE2: #include "{{.*}}new_template_class_test.h" +// CHECK-NEW-TEST-CPP-CASE2: template <typename T> void A<T>::g() {} +// CHECK-NEW-TEST-CPP-CASE2: template <typename T> template <typename U> void A<T>::k() {} +// CHECK-NEW-TEST-CPP-CASE2: template <typename T> int A<T>::c = 2; |