13626516bSHaojian Wu // RUN: mkdir -p %T/used-helper-decls 23626516bSHaojian Wu // RUN: cp %S/Inputs/helper_decls_test* %T/used-helper-decls/ 33626516bSHaojian Wu // RUN: cd %T/used-helper-decls 43626516bSHaojian Wu 53626516bSHaojian Wu // ---------------------------------------------------------------------------- 6*dd5571d5SKazuaki Ishizaki // Test moving used helper function and its transitively used functions. 73626516bSHaojian Wu // ---------------------------------------------------------------------------- 83626516bSHaojian Wu // RUN: clang-move -names="a::Class1" -new_cc=%T/used-helper-decls/new_helper_decls_test.cpp -new_header=%T/used-helper-decls/new_helper_decls_test.h -old_cc=%T/used-helper-decls/helper_decls_test.cpp -old_header=../used-helper-decls/helper_decls_test.h %T/used-helper-decls/helper_decls_test.cpp -- -std=c++11 93626516bSHaojian Wu // RUN: FileCheck -input-file=%T/used-helper-decls/new_helper_decls_test.cpp -check-prefix=CHECK-NEW-CLASS1-CPP %s 103626516bSHaojian Wu // RUN: FileCheck -input-file=%T/used-helper-decls/helper_decls_test.cpp -check-prefix=CHECK-OLD-CLASS1-CPP %s 113626516bSHaojian Wu 123626516bSHaojian Wu // CHECK-NEW-CLASS1-CPP: #include "{{.*}}new_helper_decls_test.h" 133626516bSHaojian Wu // CHECK-NEW-CLASS1-CPP-SAME: {{[[:space:]]}} 143626516bSHaojian Wu // CHECK-NEW-CLASS1-CPP-NEXT: namespace { 153626516bSHaojian Wu // CHECK-NEW-CLASS1-CPP-NEXT: void HelperFun1() {} 163626516bSHaojian Wu // CHECK-NEW-CLASS1-CPP-SAME: {{[[:space:]]}} 173626516bSHaojian Wu // CHECK-NEW-CLASS1-CPP-NEXT: void HelperFun2() { HelperFun1(); } 183626516bSHaojian Wu // CHECK-NEW-CLASS1-CPP-NEXT: } // namespace 193626516bSHaojian Wu // CHECK-NEW-CLASS1-CPP-SAME: {{[[:space:]]}} 203626516bSHaojian Wu // CHECK-NEW-CLASS1-CPP-NEXT: namespace a { 213626516bSHaojian Wu // CHECK-NEW-CLASS1-CPP-NEXT: void Class1::f() { HelperFun2(); } 223626516bSHaojian Wu // CHECK-NEW-CLASS1-CPP-NEXT: } // namespace a 233626516bSHaojian Wu // 243626516bSHaojian Wu // CHECK-OLD-CLASS1-CPP: void HelperFun1() {} 253626516bSHaojian Wu // CHECK-OLD-CLASS1-CPP-NOT: void HelperFun2() { HelperFun1(); } 263626516bSHaojian Wu // CHECK-OLD-CLASS1-CPP-NOT: void Class1::f() { HelperFun2(); } 273626516bSHaojian Wu // CHECK-OLD-CLASS1-CPP: void Class2::f() { 283626516bSHaojian Wu // CHECK-OLD-CLASS1-CPP: HelperFun1(); 293626516bSHaojian Wu 303626516bSHaojian Wu 313626516bSHaojian Wu // ---------------------------------------------------------------------------- 32*dd5571d5SKazuaki Ishizaki // Test moving used helper function and its transitively used static variables. 333626516bSHaojian Wu // ---------------------------------------------------------------------------- 343626516bSHaojian Wu // RUN: cp %S/Inputs/helper_decls_test* %T/used-helper-decls/ 353626516bSHaojian Wu // RUN: clang-move -names="a::Class2" -new_cc=%T/used-helper-decls/new_helper_decls_test.cpp -new_header=%T/used-helper-decls/new_helper_decls_test.h -old_cc=%T/used-helper-decls/helper_decls_test.cpp -old_header=../used-helper-decls/helper_decls_test.h %T/used-helper-decls/helper_decls_test.cpp -- -std=c++11 363626516bSHaojian Wu // RUN: FileCheck -input-file=%T/used-helper-decls/new_helper_decls_test.cpp -check-prefix=CHECK-NEW-CLASS2-CPP %s 373626516bSHaojian Wu // RUN: FileCheck -input-file=%T/used-helper-decls/helper_decls_test.cpp -check-prefix=CHECK-OLD-CLASS2-CPP %s 383626516bSHaojian Wu 393626516bSHaojian Wu // CHECK-NEW-CLASS2-CPP: #include "{{.*}}new_helper_decls_test.h" 403626516bSHaojian Wu // CHECK-NEW-CLASS2-CPP-SAME: {{[[:space:]]}} 413626516bSHaojian Wu // CHECK-NEW-CLASS2-CPP-NEXT: namespace { 423626516bSHaojian Wu // CHECK-NEW-CLASS2-CPP-NEXT: void HelperFun1() {} 433626516bSHaojian Wu // CHECK-NEW-CLASS2-CPP-NEXT: } // namespace 443626516bSHaojian Wu // CHECK-NEW-CLASS2-CPP-SAME: {{[[:space:]]}} 453626516bSHaojian Wu // CHECK-NEW-CLASS2-CPP-NEXT: static const int K2 = 2; 463626516bSHaojian Wu // CHECK-NEW-CLASS2-CPP-SAME: {{[[:space:]]}} 473626516bSHaojian Wu // CHECK-NEW-CLASS2-CPP-NEXT: static void HelperFun3() { K2; } 483626516bSHaojian Wu // CHECK-NEW-CLASS2-CPP-NEXT: namespace a { 493626516bSHaojian Wu // CHECK-NEW-CLASS2-CPP-NEXT: void Class2::f() { 503626516bSHaojian Wu // CHECK-NEW-CLASS2-CPP-NEXT: HelperFun1(); 513626516bSHaojian Wu // CHECK-NEW-CLASS2-CPP-NEXT: HelperFun3(); 523626516bSHaojian Wu // CHECK-NEW-CLASS2-CPP-NEXT: } 533626516bSHaojian Wu // CHECK-NEW-CLASS2-CPP-NEXT: } // namespace a 543626516bSHaojian Wu 553626516bSHaojian Wu // CHECK-OLD-CLASS2-CPP: void HelperFun1() {} 563626516bSHaojian Wu // CHECK-OLD-CLASS2-CPP: void HelperFun2() { HelperFun1(); } 573626516bSHaojian Wu // CHECK-OLD-CLASS2-CPP: const int K1 = 1; 583626516bSHaojian Wu // CHECK-OLD-CLASS2-CPP: static const int K2 = 2; 593626516bSHaojian Wu // CHECK-OLD-CLASS2-CPP-NOT: static void HelperFun3() { K2; } 603626516bSHaojian Wu // CHECK-OLD-CLASS2-CPP-NOT: void Class2::f() { 613626516bSHaojian Wu // CHECK-OLD-CLASS2-CPP-NOT: HelperFun1(); 623626516bSHaojian Wu // CHECK-OLD-CLASS2-CPP-NOT: HelperFun3(); 633626516bSHaojian Wu // CHECK-OLD-CLASS2-CPP: void Class5::f() { 643626516bSHaojian Wu // CHECK-OLD-CLASS2-CPP-NEXT: int Result = K1 + K2 + K3; 653626516bSHaojian Wu 663626516bSHaojian Wu 673626516bSHaojian Wu // ---------------------------------------------------------------------------- 683626516bSHaojian Wu // Test using a static member variable of a helper class. 693626516bSHaojian Wu // ---------------------------------------------------------------------------- 703626516bSHaojian Wu // RUN: cp %S/Inputs/helper_decls_test* %T/used-helper-decls/ 713626516bSHaojian Wu // RUN: clang-move -names="a::Class3" -new_cc=%T/used-helper-decls/new_helper_decls_test.cpp -new_header=%T/used-helper-decls/new_helper_decls_test.h -old_cc=%T/used-helper-decls/helper_decls_test.cpp -old_header=../used-helper-decls/helper_decls_test.h %T/used-helper-decls/helper_decls_test.cpp -- -std=c++11 723626516bSHaojian Wu // RUN: FileCheck -input-file=%T/used-helper-decls/new_helper_decls_test.cpp -check-prefix=CHECK-NEW-CLASS3-CPP %s 733626516bSHaojian Wu // RUN: FileCheck -input-file=%T/used-helper-decls/helper_decls_test.cpp -check-prefix=CHECK-OLD-CLASS3-CPP %s 743626516bSHaojian Wu 753626516bSHaojian Wu // CHECK-NEW-CLASS3-CPP: #include "{{.*}}new_helper_decls_test.h" 763626516bSHaojian Wu // CHECK-NEW-CLASS3-CPP-SAME: {{[[:space:]]}} 773626516bSHaojian Wu // CHECK-NEW-CLASS3-CPP-NEXT: namespace { 783626516bSHaojian Wu // CHECK-NEW-CLASS3-CPP-NEXT: class HelperC1 { 793626516bSHaojian Wu // CHECK-NEW-CLASS3-CPP-NEXT: public: 803626516bSHaojian Wu // CHECK-NEW-CLASS3-CPP-NEXT: static int I; 813626516bSHaojian Wu // CHECK-NEW-CLASS3-CPP-NEXT: }; 823626516bSHaojian Wu // CHECK-NEW-CLASS3-CPP-SAME: {{[[:space:]]}} 833626516bSHaojian Wu // CHECK-NEW-CLASS3-CPP-NEXT: int HelperC1::I = 0; 843626516bSHaojian Wu // CHECK-NEW-CLASS3-CPP-NEXT: } // namespace 853626516bSHaojian Wu // CHECK-NEW-CLASS3-CPP-SAME: {{[[:space:]]}} 863626516bSHaojian Wu // CHECK-NEW-CLASS3-CPP-NEXT: namespace a { 873626516bSHaojian Wu // CHECK-NEW-CLASS3-CPP-NEXT: void Class3::f() { HelperC1::I; } 883626516bSHaojian Wu // CHECK-NEW-CLASS3-CPP-NEXT: } // namespace a 893626516bSHaojian Wu 903626516bSHaojian Wu // CHECK-OLD-CLASS3-CPP: namespace { 913626516bSHaojian Wu // CHECK-OLD-CLASS3-CPP-NOT: class HelperC1 { 923626516bSHaojian Wu // CHECK-OLD-CLASS3-CPP-NOT: public: 933626516bSHaojian Wu // CHECK-OLD-CLASS3-CPP-NOT: static int I; 943626516bSHaojian Wu // CHECK-OLD-CLASS3-CPP-NOT: }; 953626516bSHaojian Wu // CHECK-OLD-CLASS3-CPP-NOT: int HelperC1::I = 0; 963626516bSHaojian Wu // CHECK-OLD-CLASS3-CPP: class HelperC2 {}; 973626516bSHaojian Wu 983626516bSHaojian Wu 993626516bSHaojian Wu // ---------------------------------------------------------------------------- 1003626516bSHaojian Wu // Test moving helper classes. 1013626516bSHaojian Wu // ---------------------------------------------------------------------------- 1023626516bSHaojian Wu // RUN: cp %S/Inputs/helper_decls_test* %T/used-helper-decls/ 1033626516bSHaojian Wu // RUN: clang-move -names="a::Class4" -new_cc=%T/used-helper-decls/new_helper_decls_test.cpp -new_header=%T/used-helper-decls/new_helper_decls_test.h -old_cc=%T/used-helper-decls/helper_decls_test.cpp -old_header=../used-helper-decls/helper_decls_test.h %T/used-helper-decls/helper_decls_test.cpp -- -std=c++11 1043626516bSHaojian Wu // RUN: FileCheck -input-file=%T/used-helper-decls/new_helper_decls_test.cpp -check-prefix=CHECK-NEW-CLASS4-CPP %s 1053626516bSHaojian Wu // RUN: FileCheck -input-file=%T/used-helper-decls/helper_decls_test.cpp -check-prefix=CHECK-OLD-CLASS4-CPP %s 1063626516bSHaojian Wu 1073626516bSHaojian Wu // CHECK-NEW-CLASS4-CPP: #include "{{.*}}new_helper_decls_test.h" 1083626516bSHaojian Wu // CHECK-NEW-CLASS4-CPP-SAME: {{[[:space:]]}} 1093626516bSHaojian Wu // CHECK-NEW-CLASS4-CPP-NEXT: namespace { 1103626516bSHaojian Wu // CHECK-NEW-CLASS4-CPP-NEXT: class HelperC2 {}; 1113626516bSHaojian Wu // CHECK-NEW-CLASS4-CPP-NEXT: } // namespace 1123626516bSHaojian Wu // CHECK-NEW-CLASS4-CPP-SAME: {{[[:space:]]}} 1133626516bSHaojian Wu // CHECK-NEW-CLASS4-CPP-NEXT: namespace a { 1143626516bSHaojian Wu // CHECK-NEW-CLASS4-CPP-NEXT: void Class4::f() { HelperC2 c2; } 1153626516bSHaojian Wu // CHECK-NEW-CLASS4-CPP-NEXT: } // namespace a 1163626516bSHaojian Wu 1173626516bSHaojian Wu // CHECK-OLD-CLASS4-CPP-NOT: class HelperC2 {}; 1183626516bSHaojian Wu 1193626516bSHaojian Wu 1203626516bSHaojian Wu // ---------------------------------------------------------------------------- 1213626516bSHaojian Wu // Test moving helper variables and helper functions together. 1223626516bSHaojian Wu // ---------------------------------------------------------------------------- 1233626516bSHaojian Wu // RUN: cp %S/Inputs/helper_decls_test* %T/used-helper-decls/ 1243626516bSHaojian Wu // RUN: clang-move -names="a::Class5" -new_cc=%T/used-helper-decls/new_helper_decls_test.cpp -new_header=%T/used-helper-decls/new_helper_decls_test.h -old_cc=%T/used-helper-decls/helper_decls_test.cpp -old_header=../used-helper-decls/helper_decls_test.h %T/used-helper-decls/helper_decls_test.cpp -- -std=c++11 1253626516bSHaojian Wu // RUN: FileCheck -input-file=%T/used-helper-decls/new_helper_decls_test.cpp -check-prefix=CHECK-NEW-CLASS5-CPP %s 1263626516bSHaojian Wu // RUN: FileCheck -input-file=%T/used-helper-decls/helper_decls_test.cpp -check-prefix=CHECK-OLD-CLASS5-CPP %s 1273626516bSHaojian Wu 1283626516bSHaojian Wu // CHECK-NEW-CLASS5-CPP: #include "{{.*}}new_helper_decls_test.h" 1293626516bSHaojian Wu // CHECK-NEW-CLASS5-CPP-SAME: {{[[:space:]]}} 1303626516bSHaojian Wu // CHECK-NEW-CLASS5-CPP-NEXT: namespace { 1313626516bSHaojian Wu // CHECK-NEW-CLASS5-CPP-NEXT: const int K1 = 1; 1323626516bSHaojian Wu // CHECK-NEW-CLASS5-CPP-NEXT: } // namespace 1333626516bSHaojian Wu // CHECK-NEW-CLASS5-CPP-SAME: {{[[:space:]]}} 1343626516bSHaojian Wu // CHECK-NEW-CLASS5-CPP-NEXT: static const int K2 = 2; 1353626516bSHaojian Wu // CHECK-NEW-CLASS5-CPP-NEXT: namespace a { 1363626516bSHaojian Wu // CHECK-NEW-CLASS5-CPP-NEXT: static const int K3 = 3; 1373626516bSHaojian Wu // CHECK-NEW-CLASS5-CPP-SAME: {{[[:space:]]}} 1383626516bSHaojian Wu // CHECK-NEW-CLASS5-CPP-NEXT: static void HelperFun4() {} 1393626516bSHaojian Wu // CHECK-NEW-CLASS5-CPP-SAME: {{[[:space:]]}} 1403626516bSHaojian Wu // CHECK-NEW-CLASS5-CPP-NEXT: void Class5::f() { 1413626516bSHaojian Wu // CHECK-NEW-CLASS5-CPP-NEXT: int Result = K1 + K2 + K3; 1423626516bSHaojian Wu // CHECK-NEW-CLASS5-CPP-NEXT: HelperFun4(); 1433626516bSHaojian Wu // CHECK-NEW-CLASS5-CPP-NEXT: } 1443626516bSHaojian Wu // CHECK-NEW-CLASS5-CPP-NEXT: } // namespace a 1453626516bSHaojian Wu 1463626516bSHaojian Wu // CHECK-OLD-CLASS5-CPP-NOT: const int K1 = 1; 1473626516bSHaojian Wu // CHECK-OLD-CLASS5-CPP: static const int K2 = 2; 1483626516bSHaojian Wu // CHECK-OLD-CLASS5-CPP: static void HelperFun3() { K2; } 1493626516bSHaojian Wu // CHECK-OLD-CLASS5-CPP: static const int K4 = HelperC3::I; 1503626516bSHaojian Wu // CHECK-OLD-CLASS5-CPP-NOT: void Class5::f() { 1513626516bSHaojian Wu 1523626516bSHaojian Wu 1533626516bSHaojian Wu // ---------------------------------------------------------------------------- 154*dd5571d5SKazuaki Ishizaki // Test moving helper variables and their transitively used helper classes. 1553626516bSHaojian Wu // ---------------------------------------------------------------------------- 1563626516bSHaojian Wu // RUN: cp %S/Inputs/helper_decls_test* %T/used-helper-decls/ 1573626516bSHaojian Wu // RUN: clang-move -names="a::Class6" -new_cc=%T/used-helper-decls/new_helper_decls_test.cpp -new_header=%T/used-helper-decls/new_helper_decls_test.h -old_cc=%T/used-helper-decls/helper_decls_test.cpp -old_header=../used-helper-decls/helper_decls_test.h %T/used-helper-decls/helper_decls_test.cpp -- -std=c++11 1583626516bSHaojian Wu // RUN: FileCheck -input-file=%T/used-helper-decls/new_helper_decls_test.cpp -check-prefix=CHECK-NEW-CLASS6-CPP %s 1593626516bSHaojian Wu // RUN: FileCheck -input-file=%T/used-helper-decls/helper_decls_test.cpp -check-prefix=CHECK-OLD-CLASS6-CPP %s 1603626516bSHaojian Wu 1613626516bSHaojian Wu // CHECK-NEW-CLASS6-CPP: #include "{{.*}}new_helper_decls_test.h" 1623626516bSHaojian Wu // CHECK-NEW-CLASS6-CPP-SAME: {{[[:space:]]}} 1633626516bSHaojian Wu // CHECK-NEW-CLASS6-CPP-NEXT: namespace { 1643626516bSHaojian Wu // CHECK-NEW-CLASS6-CPP-NEXT: class HelperC3 { 1653626516bSHaojian Wu // CHECK-NEW-CLASS6-CPP-NEXT: public: 1663626516bSHaojian Wu // CHECK-NEW-CLASS6-CPP-NEXT: static int I; 1673626516bSHaojian Wu // CHECK-NEW-CLASS6-CPP-NEXT: }; 1683626516bSHaojian Wu // CHECK-NEW-CLASS6-CPP-SAME: {{[[:space:]]}} 1693626516bSHaojian Wu // CHECK-NEW-CLASS6-CPP-NEXT: int HelperC3::I = 0; 1703626516bSHaojian Wu // CHECK-NEW-CLASS6-CPP-NEXT: } // namespace 1713626516bSHaojian Wu // CHECK-NEW-CLASS6-CPP-SAME: {{[[:space:]]}} 1723626516bSHaojian Wu // CHECK-NEW-CLASS6-CPP-NEXT: namespace a { 1733626516bSHaojian Wu // CHECK-NEW-CLASS6-CPP-NEXT: static const int K4 = HelperC3::I; 1743626516bSHaojian Wu // CHECK-NEW-CLASS6-CPP-SAME: {{[[:space:]]}} 1753626516bSHaojian Wu // CHECK-NEW-CLASS6-CPP-NEXT: int Class6::f() { 1763626516bSHaojian Wu // CHECK-NEW-CLASS6-CPP-NEXT: int R = K4; 1773626516bSHaojian Wu // CHECK-NEW-CLASS6-CPP-NEXT: return R; 1783626516bSHaojian Wu // CHECK-NEW-CLASS6-CPP-NEXT: } 1793626516bSHaojian Wu // CHECK-NEW-CLASS6-CPP-NEXT: } // namespace a 1803626516bSHaojian Wu 1813626516bSHaojian Wu // CHECK-OLD-CLASS6-CPP-NOT: class HelperC3 { 1823626516bSHaojian Wu // CHECK-OLD-CLASS6-CPP-NOT: int HelperC3::I = 0; 1833626516bSHaojian Wu // CHECK-OLD-CLASS6-CPP-NOT: static const int K4 = HelperC3::I; 1843626516bSHaojian Wu 1853626516bSHaojian Wu 1863626516bSHaojian Wu // ---------------------------------------------------------------------------- 1873626516bSHaojian Wu // Test moving classes where its methods use helpers. 1883626516bSHaojian Wu // ---------------------------------------------------------------------------- 1893626516bSHaojian Wu // RUN: cp %S/Inputs/helper_decls_test* %T/used-helper-decls/ 1903626516bSHaojian Wu // RUN: clang-move -names="a::Class7" -new_cc=%T/used-helper-decls/new_helper_decls_test.cpp -new_header=%T/used-helper-decls/new_helper_decls_test.h -old_cc=%T/used-helper-decls/helper_decls_test.cpp -old_header=../used-helper-decls/helper_decls_test.h %T/used-helper-decls/helper_decls_test.cpp -- -std=c++11 1913626516bSHaojian Wu // RUN: FileCheck -input-file=%T/used-helper-decls/new_helper_decls_test.cpp -check-prefix=CHECK-NEW-CLASS7-CPP %s 1923626516bSHaojian Wu // RUN: FileCheck -input-file=%T/used-helper-decls/helper_decls_test.cpp -check-prefix=CHECK-OLD-CLASS7-CPP %s 1933626516bSHaojian Wu 1943626516bSHaojian Wu // CHECK-NEW-CLASS7-CPP: #include "{{.*}}new_helper_decls_test.h" 1953626516bSHaojian Wu // CHECK-NEW-CLASS7-CPP-SAME: {{[[:space:]]}} 1963626516bSHaojian Wu // CHECK-NEW-CLASS7-CPP-NEXT: namespace a { 1973626516bSHaojian Wu // CHECK-NEW-CLASS7-CPP-NEXT: static const int K6 = 6; 1983626516bSHaojian Wu // CHECK-NEW-CLASS7-CPP-SAME: {{[[:space:]]}} 1993626516bSHaojian Wu // CHECK-NEW-CLASS7-CPP-NEXT: static void HelperFun6() {} 2003626516bSHaojian Wu // CHECK-NEW-CLASS7-CPP-SAME: {{[[:space:]]}} 2013626516bSHaojian Wu // CHECK-NEW-CLASS7-CPP-NEXT: int Class7::f() { 2023626516bSHaojian Wu // CHECK-NEW-CLASS7-CPP-NEXT: int R = K6; 2033626516bSHaojian Wu // CHECK-NEW-CLASS7-CPP-NEXT: return R; 2043626516bSHaojian Wu // CHECK-NEW-CLASS7-CPP-NEXT: } 2053626516bSHaojian Wu // CHECK-NEW-CLASS7-CPP-SAME: {{[[:space:]]}} 2063626516bSHaojian Wu // CHECK-NEW-CLASS7-CPP-NEXT: int Class7::g() { 2073626516bSHaojian Wu // CHECK-NEW-CLASS7-CPP-NEXT: HelperFun6(); 2083626516bSHaojian Wu // CHECK-NEW-CLASS7-CPP-NEXT: return 1; 2093626516bSHaojian Wu // CHECK-NEW-CLASS7-CPP-NEXT: } 2103626516bSHaojian Wu // CHECK-NEW-CLASS7-CPP-NEXT: } // namespace a 2113626516bSHaojian Wu // 2123626516bSHaojian Wu // CHECK-OLD-CLASS7-CPP-NOT: static const int K6 = 6; 2133626516bSHaojian Wu // CHECK-OLD-CLASS7-CPP-NOT: static void HelperFun6() {} 2143626516bSHaojian Wu // CHECK-OLD-CLASS7-CPP-NOT: int Class7::f() { 2153626516bSHaojian Wu // CHECK-OLD-CLASS7-CPP-NOT: int Class7::g() { 2163626516bSHaojian Wu 2173626516bSHaojian Wu 2183626516bSHaojian Wu // ---------------------------------------------------------------------------- 219*dd5571d5SKazuaki Ishizaki // Test moving helper function and its transitively used helper variables. 2203626516bSHaojian Wu // ---------------------------------------------------------------------------- 2213626516bSHaojian Wu // RUN: cp %S/Inputs/helper_decls_test* %T/used-helper-decls/ 2223626516bSHaojian Wu // RUN: clang-move -names="a::Fun1" -new_cc=%T/used-helper-decls/new_helper_decls_test.cpp -new_header=%T/used-helper-decls/new_helper_decls_test.h -old_cc=%T/used-helper-decls/helper_decls_test.cpp -old_header=../used-helper-decls/helper_decls_test.h %T/used-helper-decls/helper_decls_test.cpp -- -std=c++11 2233626516bSHaojian Wu // RUN: FileCheck -input-file=%T/used-helper-decls/new_helper_decls_test.cpp -check-prefix=CHECK-NEW-FUN1-CPP %s 2243626516bSHaojian Wu // RUN: FileCheck -input-file=%T/used-helper-decls/helper_decls_test.cpp -check-prefix=CHECK-OLD-FUN1-CPP %s 2253626516bSHaojian Wu 2263626516bSHaojian Wu // CHECK-NEW-FUN1-CPP: #include "{{.*}}new_helper_decls_test.h" 2273626516bSHaojian Wu // CHECK-NEW-FUN1-CPP-SAME: {{[[:space:]]}} 2283626516bSHaojian Wu // CHECK-NEW-FUN1-CPP-NEXT: namespace a { 2293626516bSHaojian Wu // CHECK-NEW-FUN1-CPP-NEXT: static const int K5 = 5; 2303626516bSHaojian Wu // CHECK-NEW-FUN1-CPP-SAME: {{[[:space:]]}} 2313626516bSHaojian Wu // CHECK-NEW-FUN1-CPP-NEXT: static int HelperFun5() { 2323626516bSHaojian Wu // CHECK-NEW-FUN1-CPP-NEXT: int R = K5; 2333626516bSHaojian Wu // CHECK-NEW-FUN1-CPP-NEXT: return R; 2343626516bSHaojian Wu // CHECK-NEW-FUN1-CPP-NEXT: } 2353626516bSHaojian Wu // CHECK-NEW-FUN1-CPP-SAME: {{[[:space:]]}} 2363626516bSHaojian Wu // CHECK-NEW-FUN1-CPP-NEXT: void Fun1() { HelperFun5(); } 2373626516bSHaojian Wu // CHECK-NEW-FUN1-CPP-NEXT: } // namespace a 2383626516bSHaojian Wu 2393626516bSHaojian Wu // CHECK-OLD-FUN1-CPP-NOT: static const int K5 = 5; 2403626516bSHaojian Wu // CHECK-OLD-FUN1-CPP-NOT: static int HelperFun5() { 2413626516bSHaojian Wu // CHECK-OLD-FUN1-CPP-NOT: void Fun1() { HelperFun5(); } 2423626516bSHaojian Wu 2433626516bSHaojian Wu 2443626516bSHaojian Wu // ---------------------------------------------------------------------------- 2453626516bSHaojian Wu // Test no moving helpers when moving inline functions in header. 2463626516bSHaojian Wu // ---------------------------------------------------------------------------- 2473626516bSHaojian Wu // RUN: cp %S/Inputs/helper_decls_test* %T/used-helper-decls/ 2483626516bSHaojian Wu // RUN: clang-move -names="a::Fun2" -new_cc=%T/used-helper-decls/new_helper_decls_test.cpp -new_header=%T/used-helper-decls/new_helper_decls_test.h -old_cc=%T/used-helper-decls/helper_decls_test.cpp -old_header=../used-helper-decls/helper_decls_test.h %T/used-helper-decls/helper_decls_test.cpp -- -std=c++11 2493626516bSHaojian Wu // RUN: FileCheck -input-file=%T/used-helper-decls/new_helper_decls_test.cpp -check-prefix=CHECK-NEW-FUN2-CPP %s 2503626516bSHaojian Wu // RUN: FileCheck -input-file=%T/used-helper-decls/new_helper_decls_test.h -check-prefix=CHECK-NEW-FUN2-H %s 2513626516bSHaojian Wu // RUN: FileCheck -input-file=%T/used-helper-decls/helper_decls_test.h -check-prefix=CHECK-OLD-FUN2-H %s 2523626516bSHaojian Wu 2533626516bSHaojian Wu // CHECK-NEW-FUN2-H: namespace a { 2543626516bSHaojian Wu // CHECK-NEW-FUN2-H-NEXT: inline void Fun2() {} 2553626516bSHaojian Wu // CHECK-NEW-FUN2-H-NEXT: } // namespace a 2563626516bSHaojian Wu 2573626516bSHaojian Wu // CHECK-NEW-FUN2-CPP: #include "{{.*}}new_helper_decls_test.h" 2583626516bSHaojian Wu // CHECK-NEW-FUN2-CPP-SAME: {{[[:space:]]}} 2593626516bSHaojian Wu 2603626516bSHaojian Wu // CHECK-OLD-FUN2-H-NOT: inline void Fun2() {} 2613626516bSHaojian Wu 2624775ce56SHaojian Wu // ---------------------------------------------------------------------------- 263*dd5571d5SKazuaki Ishizaki // Test moving used helper function and its transitively used functions. 2644775ce56SHaojian Wu // ---------------------------------------------------------------------------- 2654775ce56SHaojian Wu // RUN: cp %S/Inputs/helper_decls_test* %T/used-helper-decls/ 2664775ce56SHaojian Wu // RUN: clang-move -names="b::Fun3" -new_cc=%T/used-helper-decls/new_helper_decls_test.cpp -new_header=%T/used-helper-decls/new_helper_decls_test.h -old_cc=%T/used-helper-decls/helper_decls_test.cpp -old_header=../used-helper-decls/helper_decls_test.h %T/used-helper-decls/helper_decls_test.cpp -- -std=c++11 2674775ce56SHaojian Wu // RUN: FileCheck -input-file=%T/used-helper-decls/new_helper_decls_test.cpp -check-prefix=CHECK-NEW-FUN3-CPP %s 2684775ce56SHaojian Wu // RUN: FileCheck -input-file=%T/used-helper-decls/helper_decls_test.cpp -check-prefix=CHECK-OLD-FUN3-CPP %s 2694775ce56SHaojian Wu 2704775ce56SHaojian Wu // CHECK-NEW-FUN3-CPP: #include "{{.*}}new_helper_decls_test.h" 2714775ce56SHaojian Wu // CHECK-NEW-FUN3-CPP-SAME: {{[[:space:]]}} 2724775ce56SHaojian Wu // CHECK-NEW-FUN3-CPP-NEXT: namespace b { 2734775ce56SHaojian Wu // CHECK-NEW-FUN3-CPP-NEXT: namespace { 2744775ce56SHaojian Wu // CHECK-NEW-FUN3-CPP-NEXT: void HelperFun7(); 2754775ce56SHaojian Wu // CHECK-NEW-FUN3-CPP-SAME: {{[[:space:]]}} 2764775ce56SHaojian Wu // CHECK-NEW-FUN3-CPP-NEXT: class HelperC4; 2774775ce56SHaojian Wu // CHECK-NEW-FUN3-CPP-NEXT: } // namespace 2784775ce56SHaojian Wu // CHECK-NEW-FUN3-CPP-SAME: {{[[:space:]]}} 2794775ce56SHaojian Wu // CHECK-NEW-FUN3-CPP-NEXT: void Fun3() { 2804775ce56SHaojian Wu // CHECK-NEW-FUN3-CPP-NEXT: HelperFun7(); 2814775ce56SHaojian Wu // CHECK-NEW-FUN3-CPP-NEXT: HelperC4 *t; 2824775ce56SHaojian Wu // CHECK-NEW-FUN3-CPP-NEXT: } 2834775ce56SHaojian Wu // CHECK-NEW-FUN3-CPP-NEXT: namespace { 2844775ce56SHaojian Wu // CHECK-NEW-FUN3-CPP-NEXT: void HelperFun7() {} 2854775ce56SHaojian Wu // CHECK-NEW-FUN3-CPP-SAME: {{[[:space:]]}} 2864775ce56SHaojian Wu // CHECK-NEW-FUN3-CPP-NEXT: class HelperC4 {}; 2874775ce56SHaojian Wu // CHECK-NEW-FUN3-CPP-NEXT: } // namespace 2884775ce56SHaojian Wu // CHECK-NEW-FUN3-CPP-NEXT: } // namespace b 2894775ce56SHaojian Wu // 2904775ce56SHaojian Wu // CHECK-OLD-FUN3-CPP-NOT: void HelperFun7(); 2914775ce56SHaojian Wu // CHECK-OLD-FUN3-CPP-NOT: void HelperFun7() {} 2924775ce56SHaojian Wu // CHECK-OLD-FUN3-CPP-NOT: void Fun3() { HelperFun7(); } 2933626516bSHaojian Wu 2943626516bSHaojian Wu // ---------------------------------------------------------------------------- 2953626516bSHaojian Wu // Test moving all symbols in headers. 2963626516bSHaojian Wu // ---------------------------------------------------------------------------- 2973626516bSHaojian Wu // RUN: cp %S/Inputs/helper_decls_test* %T/used-helper-decls/ 2984775ce56SHaojian Wu // RUN: clang-move -names="a::Class1, a::Class2, a::Class3, a::Class4, a::Class5, a::Class5, a::Class6, a::Class7, a::Fun1, a::Fun2, b::Fun3" -new_cc=%T/used-helper-decls/new_helper_decls_test.cpp -new_header=%T/used-helper-decls/new_helper_decls_test.h -old_cc=%T/used-helper-decls/helper_decls_test.cpp -old_header=../used-helper-decls/helper_decls_test.h %T/used-helper-decls/helper_decls_test.cpp -- -std=c++11 2993626516bSHaojian Wu // RUN: FileCheck -input-file=%T/used-helper-decls/new_helper_decls_test.h -check-prefix=CHECK-NEW-H %s 3003626516bSHaojian Wu // RUN: FileCheck -input-file=%T/used-helper-decls/new_helper_decls_test.cpp -check-prefix=CHECK-NEW-CPP %s 3013626516bSHaojian Wu // RUN: FileCheck -input-file=%T/used-helper-decls/helper_decls_test.h -allow-empty -check-prefix=CHECK-EMPTY %s 3023626516bSHaojian Wu // RUN: FileCheck -input-file=%T/used-helper-decls/helper_decls_test.cpp -allow-empty -check-prefix=CHECK-EMPTY %s 3033626516bSHaojian Wu 3043626516bSHaojian Wu 3053626516bSHaojian Wu // CHECK-NEW-H: namespace a { 3063626516bSHaojian Wu // CHECK-NEW-H-NEXT: class Class1 { 3073626516bSHaojian Wu // CHECK-NEW-H-NEXT: void f(); 3083626516bSHaojian Wu // CHECK-NEW-H-NEXT: }; 3093626516bSHaojian Wu // CHECK-NEW-H-SAME: {{[[:space:]]}} 3103626516bSHaojian Wu // CHECK-NEW-H-NEXT: class Class2 { 3113626516bSHaojian Wu // CHECK-NEW-H-NEXT: void f(); 3123626516bSHaojian Wu // CHECK-NEW-H-NEXT: }; 3133626516bSHaojian Wu // CHECK-NEW-H-SAME: {{[[:space:]]}} 3143626516bSHaojian Wu // CHECK-NEW-H-NEXT: class Class3 { 3153626516bSHaojian Wu // CHECK-NEW-H-NEXT: void f(); 3163626516bSHaojian Wu // CHECK-NEW-H-NEXT: }; 3173626516bSHaojian Wu // CHECK-NEW-H-SAME: {{[[:space:]]}} 3183626516bSHaojian Wu // CHECK-NEW-H-NEXT: class Class4 { 3193626516bSHaojian Wu // CHECK-NEW-H-NEXT: void f(); 3203626516bSHaojian Wu // CHECK-NEW-H-NEXT: }; 3213626516bSHaojian Wu // CHECK-NEW-H-SAME: {{[[:space:]]}} 3223626516bSHaojian Wu // CHECK-NEW-H-NEXT: class Class5 { 3233626516bSHaojian Wu // CHECK-NEW-H-NEXT: void f(); 3243626516bSHaojian Wu // CHECK-NEW-H-NEXT: }; 3253626516bSHaojian Wu // CHECK-NEW-H-SAME: {{[[:space:]]}} 3263626516bSHaojian Wu // CHECK-NEW-H-NEXT: class Class6 { 3273626516bSHaojian Wu // CHECK-NEW-H-NEXT: int f(); 3283626516bSHaojian Wu // CHECK-NEW-H-NEXT: }; 3293626516bSHaojian Wu // CHECK-NEW-H-SAME: {{[[:space:]]}} 3303626516bSHaojian Wu // CHECK-NEW-H-NEXT: class Class7 { 3313626516bSHaojian Wu // CHECK-NEW-H-NEXT: int f(); 3323626516bSHaojian Wu // CHECK-NEW-H-NEXT: int g(); 3333626516bSHaojian Wu // CHECK-NEW-H-NEXT: }; 3343626516bSHaojian Wu // CHECK-NEW-H-SAME: {{[[:space:]]}} 3353626516bSHaojian Wu // CHECK-NEW-H-NEXT: void Fun1(); 3363626516bSHaojian Wu // CHECK-NEW-H-SAME: {{[[:space:]]}} 3373626516bSHaojian Wu // CHECK-NEW-H-NEXT: inline void Fun2() {} 33820505898SKrasimir Georgiev // CHECK-NEW-H-SAME: {{[[:space:]]}} 3393626516bSHaojian Wu // CHECK-NEW-H-NEXT: } // namespace a 3403626516bSHaojian Wu 3413626516bSHaojian Wu 3423626516bSHaojian Wu // CHECK-NEW-CPP: namespace { 3433626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: class HelperC1 { 3443626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: public: 3453626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: static int I; 3463626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: }; 3473626516bSHaojian Wu // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 3483626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: int HelperC1::I = 0; 3493626516bSHaojian Wu // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 3503626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: class HelperC2 {}; 3513626516bSHaojian Wu // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 3523626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: class HelperC3 { 3533626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: public: 3543626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: static int I; 3553626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: }; 3563626516bSHaojian Wu // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 3573626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: int HelperC3::I = 0; 3583626516bSHaojian Wu // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 3593626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: void HelperFun1() {} 3603626516bSHaojian Wu // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 3613626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: void HelperFun2() { HelperFun1(); } 3623626516bSHaojian Wu // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 3633626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: const int K1 = 1; 3643626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: } // namespace 3653626516bSHaojian Wu // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 3663626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: static const int K2 = 2; 3673626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: static void HelperFun3() { K2; } 3683626516bSHaojian Wu // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 3693626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: namespace a { 3703626516bSHaojian Wu // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 3713626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: static const int K3 = 3; 3723626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: static const int K4 = HelperC3::I; 3733626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: static const int K5 = 5; 3743626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: static const int K6 = 6; 3753626516bSHaojian Wu // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 3763626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: static void HelperFun4() {} 3773626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: static void HelperFun6() {} 3783626516bSHaojian Wu // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 3793626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: void Class1::f() { HelperFun2(); } 3803626516bSHaojian Wu // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 3813626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: void Class2::f() { 3823626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: HelperFun1(); 3833626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: HelperFun3(); 3843626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: } 3853626516bSHaojian Wu // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 3863626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: void Class3::f() { HelperC1::I; } 3873626516bSHaojian Wu // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 3883626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: void Class4::f() { HelperC2 c2; } 3893626516bSHaojian Wu // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 3903626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: void Class5::f() { 3913626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: int Result = K1 + K2 + K3; 3923626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: HelperFun4(); 3933626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: } 3943626516bSHaojian Wu // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 3953626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: int Class6::f() { 3963626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: int R = K4; 3973626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: return R; 3983626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: } 3993626516bSHaojian Wu // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 4003626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: int Class7::f() { 4013626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: int R = K6; 4023626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: return R; 4033626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: } 4043626516bSHaojian Wu // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 4053626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: int Class7::g() { 4063626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: HelperFun6(); 4073626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: return 1; 4083626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: } 4093626516bSHaojian Wu // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 4103626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: static int HelperFun5() { 4113626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: int R = K5; 4123626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: return R; 4133626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: } 4143626516bSHaojian Wu // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 4153626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: void Fun1() { HelperFun5(); } 41620505898SKrasimir Georgiev // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 4173626516bSHaojian Wu // CHECK-NEW-CPP-NEXT: } // namespace a 4184775ce56SHaojian Wu // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 4194775ce56SHaojian Wu // CHECK-NEW-CPP-NEXT: namespace b { 4204775ce56SHaojian Wu // CHECK-NEW-CPP-NEXT: namespace { 4214775ce56SHaojian Wu // CHECK-NEW-CPP-NEXT: void HelperFun7(); 4224775ce56SHaojian Wu // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 4234775ce56SHaojian Wu // CHECK-NEW-CPP-NEXT: class HelperC4; 4244775ce56SHaojian Wu // CHECK-NEW-CPP-NEXT: } // namespace 4254775ce56SHaojian Wu // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 4264775ce56SHaojian Wu // CHECK-NEW-CPP-NEXT: void Fun3() { 4274775ce56SHaojian Wu // CHECK-NEW-CPP-NEXT: HelperFun7(); 4284775ce56SHaojian Wu // CHECK-NEW-CPP-NEXT: HelperC4 *t; 4294775ce56SHaojian Wu // CHECK-NEW-CPP-NEXT: } 4304775ce56SHaojian Wu // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 4314775ce56SHaojian Wu // CHECK-NEW-CPP-NEXT: namespace { 4324775ce56SHaojian Wu // CHECK-NEW-CPP-NEXT: void HelperFun7() {} 4334775ce56SHaojian Wu // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 4344775ce56SHaojian Wu // CHECK-NEW-CPP-NEXT: class HelperC4 {}; 4354775ce56SHaojian Wu // CHECK-NEW-CPP-NEXT: } // namespace 4364775ce56SHaojian Wu // CHECK-NEW-CPP-NEXT: } // namespace b 4373626516bSHaojian Wu 4383626516bSHaojian Wu // CHECK-EMPTY: {{^}}{{$}} 439