1 // RUN: mkdir -p %T/used-helper-decls 2 // RUN: cp %S/Inputs/helper_decls_test* %T/used-helper-decls/ 3 // RUN: cd %T/used-helper-decls 4 5 // ---------------------------------------------------------------------------- 6 // Test moving used helper function and its transitively used functions. 7 // ---------------------------------------------------------------------------- 8 // 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 9 // RUN: FileCheck -input-file=%T/used-helper-decls/new_helper_decls_test.cpp -check-prefix=CHECK-NEW-CLASS1-CPP %s 10 // RUN: FileCheck -input-file=%T/used-helper-decls/helper_decls_test.cpp -check-prefix=CHECK-OLD-CLASS1-CPP %s 11 12 // CHECK-NEW-CLASS1-CPP: #include "{{.*}}new_helper_decls_test.h" 13 // CHECK-NEW-CLASS1-CPP-SAME: {{[[:space:]]}} 14 // CHECK-NEW-CLASS1-CPP-NEXT: namespace { 15 // CHECK-NEW-CLASS1-CPP-NEXT: void HelperFun1() {} 16 // CHECK-NEW-CLASS1-CPP-SAME: {{[[:space:]]}} 17 // CHECK-NEW-CLASS1-CPP-NEXT: void HelperFun2() { HelperFun1(); } 18 // CHECK-NEW-CLASS1-CPP-NEXT: } // namespace 19 // CHECK-NEW-CLASS1-CPP-SAME: {{[[:space:]]}} 20 // CHECK-NEW-CLASS1-CPP-NEXT: namespace a { 21 // CHECK-NEW-CLASS1-CPP-NEXT: void Class1::f() { HelperFun2(); } 22 // CHECK-NEW-CLASS1-CPP-NEXT: } // namespace a 23 // 24 // CHECK-OLD-CLASS1-CPP: void HelperFun1() {} 25 // CHECK-OLD-CLASS1-CPP-NOT: void HelperFun2() { HelperFun1(); } 26 // CHECK-OLD-CLASS1-CPP-NOT: void Class1::f() { HelperFun2(); } 27 // CHECK-OLD-CLASS1-CPP: void Class2::f() { 28 // CHECK-OLD-CLASS1-CPP: HelperFun1(); 29 30 31 // ---------------------------------------------------------------------------- 32 // Test moving used helper function and its transitively used static variables. 33 // ---------------------------------------------------------------------------- 34 // RUN: cp %S/Inputs/helper_decls_test* %T/used-helper-decls/ 35 // 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 36 // RUN: FileCheck -input-file=%T/used-helper-decls/new_helper_decls_test.cpp -check-prefix=CHECK-NEW-CLASS2-CPP %s 37 // RUN: FileCheck -input-file=%T/used-helper-decls/helper_decls_test.cpp -check-prefix=CHECK-OLD-CLASS2-CPP %s 38 39 // CHECK-NEW-CLASS2-CPP: #include "{{.*}}new_helper_decls_test.h" 40 // CHECK-NEW-CLASS2-CPP-SAME: {{[[:space:]]}} 41 // CHECK-NEW-CLASS2-CPP-NEXT: namespace { 42 // CHECK-NEW-CLASS2-CPP-NEXT: void HelperFun1() {} 43 // CHECK-NEW-CLASS2-CPP-NEXT: } // namespace 44 // CHECK-NEW-CLASS2-CPP-SAME: {{[[:space:]]}} 45 // CHECK-NEW-CLASS2-CPP-NEXT: static const int K2 = 2; 46 // CHECK-NEW-CLASS2-CPP-SAME: {{[[:space:]]}} 47 // CHECK-NEW-CLASS2-CPP-NEXT: static void HelperFun3() { K2; } 48 // CHECK-NEW-CLASS2-CPP-NEXT: namespace a { 49 // CHECK-NEW-CLASS2-CPP-NEXT: void Class2::f() { 50 // CHECK-NEW-CLASS2-CPP-NEXT: HelperFun1(); 51 // CHECK-NEW-CLASS2-CPP-NEXT: HelperFun3(); 52 // CHECK-NEW-CLASS2-CPP-NEXT: } 53 // CHECK-NEW-CLASS2-CPP-NEXT: } // namespace a 54 55 // CHECK-OLD-CLASS2-CPP: void HelperFun1() {} 56 // CHECK-OLD-CLASS2-CPP: void HelperFun2() { HelperFun1(); } 57 // CHECK-OLD-CLASS2-CPP: const int K1 = 1; 58 // CHECK-OLD-CLASS2-CPP: static const int K2 = 2; 59 // CHECK-OLD-CLASS2-CPP-NOT: static void HelperFun3() { K2; } 60 // CHECK-OLD-CLASS2-CPP-NOT: void Class2::f() { 61 // CHECK-OLD-CLASS2-CPP-NOT: HelperFun1(); 62 // CHECK-OLD-CLASS2-CPP-NOT: HelperFun3(); 63 // CHECK-OLD-CLASS2-CPP: void Class5::f() { 64 // CHECK-OLD-CLASS2-CPP-NEXT: int Result = K1 + K2 + K3; 65 66 67 // ---------------------------------------------------------------------------- 68 // Test using a static member variable of a helper class. 69 // ---------------------------------------------------------------------------- 70 // RUN: cp %S/Inputs/helper_decls_test* %T/used-helper-decls/ 71 // 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 72 // RUN: FileCheck -input-file=%T/used-helper-decls/new_helper_decls_test.cpp -check-prefix=CHECK-NEW-CLASS3-CPP %s 73 // RUN: FileCheck -input-file=%T/used-helper-decls/helper_decls_test.cpp -check-prefix=CHECK-OLD-CLASS3-CPP %s 74 75 // CHECK-NEW-CLASS3-CPP: #include "{{.*}}new_helper_decls_test.h" 76 // CHECK-NEW-CLASS3-CPP-SAME: {{[[:space:]]}} 77 // CHECK-NEW-CLASS3-CPP-NEXT: namespace { 78 // CHECK-NEW-CLASS3-CPP-NEXT: class HelperC1 { 79 // CHECK-NEW-CLASS3-CPP-NEXT: public: 80 // CHECK-NEW-CLASS3-CPP-NEXT: static int I; 81 // CHECK-NEW-CLASS3-CPP-NEXT: }; 82 // CHECK-NEW-CLASS3-CPP-SAME: {{[[:space:]]}} 83 // CHECK-NEW-CLASS3-CPP-NEXT: int HelperC1::I = 0; 84 // CHECK-NEW-CLASS3-CPP-NEXT: } // namespace 85 // CHECK-NEW-CLASS3-CPP-SAME: {{[[:space:]]}} 86 // CHECK-NEW-CLASS3-CPP-NEXT: namespace a { 87 // CHECK-NEW-CLASS3-CPP-NEXT: void Class3::f() { HelperC1::I; } 88 // CHECK-NEW-CLASS3-CPP-NEXT: } // namespace a 89 90 // CHECK-OLD-CLASS3-CPP: namespace { 91 // CHECK-OLD-CLASS3-CPP-NOT: class HelperC1 { 92 // CHECK-OLD-CLASS3-CPP-NOT: public: 93 // CHECK-OLD-CLASS3-CPP-NOT: static int I; 94 // CHECK-OLD-CLASS3-CPP-NOT: }; 95 // CHECK-OLD-CLASS3-CPP-NOT: int HelperC1::I = 0; 96 // CHECK-OLD-CLASS3-CPP: class HelperC2 {}; 97 98 99 // ---------------------------------------------------------------------------- 100 // Test moving helper classes. 101 // ---------------------------------------------------------------------------- 102 // RUN: cp %S/Inputs/helper_decls_test* %T/used-helper-decls/ 103 // 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 104 // RUN: FileCheck -input-file=%T/used-helper-decls/new_helper_decls_test.cpp -check-prefix=CHECK-NEW-CLASS4-CPP %s 105 // RUN: FileCheck -input-file=%T/used-helper-decls/helper_decls_test.cpp -check-prefix=CHECK-OLD-CLASS4-CPP %s 106 107 // CHECK-NEW-CLASS4-CPP: #include "{{.*}}new_helper_decls_test.h" 108 // CHECK-NEW-CLASS4-CPP-SAME: {{[[:space:]]}} 109 // CHECK-NEW-CLASS4-CPP-NEXT: namespace { 110 // CHECK-NEW-CLASS4-CPP-NEXT: class HelperC2 {}; 111 // CHECK-NEW-CLASS4-CPP-NEXT: } // namespace 112 // CHECK-NEW-CLASS4-CPP-SAME: {{[[:space:]]}} 113 // CHECK-NEW-CLASS4-CPP-NEXT: namespace a { 114 // CHECK-NEW-CLASS4-CPP-NEXT: void Class4::f() { HelperC2 c2; } 115 // CHECK-NEW-CLASS4-CPP-NEXT: } // namespace a 116 117 // CHECK-OLD-CLASS4-CPP-NOT: class HelperC2 {}; 118 119 120 // ---------------------------------------------------------------------------- 121 // Test moving helper variables and helper functions together. 122 // ---------------------------------------------------------------------------- 123 // RUN: cp %S/Inputs/helper_decls_test* %T/used-helper-decls/ 124 // 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 125 // RUN: FileCheck -input-file=%T/used-helper-decls/new_helper_decls_test.cpp -check-prefix=CHECK-NEW-CLASS5-CPP %s 126 // RUN: FileCheck -input-file=%T/used-helper-decls/helper_decls_test.cpp -check-prefix=CHECK-OLD-CLASS5-CPP %s 127 128 // CHECK-NEW-CLASS5-CPP: #include "{{.*}}new_helper_decls_test.h" 129 // CHECK-NEW-CLASS5-CPP-SAME: {{[[:space:]]}} 130 // CHECK-NEW-CLASS5-CPP-NEXT: namespace { 131 // CHECK-NEW-CLASS5-CPP-NEXT: const int K1 = 1; 132 // CHECK-NEW-CLASS5-CPP-NEXT: } // namespace 133 // CHECK-NEW-CLASS5-CPP-SAME: {{[[:space:]]}} 134 // CHECK-NEW-CLASS5-CPP-NEXT: static const int K2 = 2; 135 // CHECK-NEW-CLASS5-CPP-NEXT: namespace a { 136 // CHECK-NEW-CLASS5-CPP-NEXT: static const int K3 = 3; 137 // CHECK-NEW-CLASS5-CPP-SAME: {{[[:space:]]}} 138 // CHECK-NEW-CLASS5-CPP-NEXT: static void HelperFun4() {} 139 // CHECK-NEW-CLASS5-CPP-SAME: {{[[:space:]]}} 140 // CHECK-NEW-CLASS5-CPP-NEXT: void Class5::f() { 141 // CHECK-NEW-CLASS5-CPP-NEXT: int Result = K1 + K2 + K3; 142 // CHECK-NEW-CLASS5-CPP-NEXT: HelperFun4(); 143 // CHECK-NEW-CLASS5-CPP-NEXT: } 144 // CHECK-NEW-CLASS5-CPP-NEXT: } // namespace a 145 146 // CHECK-OLD-CLASS5-CPP-NOT: const int K1 = 1; 147 // CHECK-OLD-CLASS5-CPP: static const int K2 = 2; 148 // CHECK-OLD-CLASS5-CPP: static void HelperFun3() { K2; } 149 // CHECK-OLD-CLASS5-CPP: static const int K4 = HelperC3::I; 150 // CHECK-OLD-CLASS5-CPP-NOT: void Class5::f() { 151 152 153 // ---------------------------------------------------------------------------- 154 // Test moving helper variables and their transitively used helper classes. 155 // ---------------------------------------------------------------------------- 156 // RUN: cp %S/Inputs/helper_decls_test* %T/used-helper-decls/ 157 // 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 158 // RUN: FileCheck -input-file=%T/used-helper-decls/new_helper_decls_test.cpp -check-prefix=CHECK-NEW-CLASS6-CPP %s 159 // RUN: FileCheck -input-file=%T/used-helper-decls/helper_decls_test.cpp -check-prefix=CHECK-OLD-CLASS6-CPP %s 160 161 // CHECK-NEW-CLASS6-CPP: #include "{{.*}}new_helper_decls_test.h" 162 // CHECK-NEW-CLASS6-CPP-SAME: {{[[:space:]]}} 163 // CHECK-NEW-CLASS6-CPP-NEXT: namespace { 164 // CHECK-NEW-CLASS6-CPP-NEXT: class HelperC3 { 165 // CHECK-NEW-CLASS6-CPP-NEXT: public: 166 // CHECK-NEW-CLASS6-CPP-NEXT: static int I; 167 // CHECK-NEW-CLASS6-CPP-NEXT: }; 168 // CHECK-NEW-CLASS6-CPP-SAME: {{[[:space:]]}} 169 // CHECK-NEW-CLASS6-CPP-NEXT: int HelperC3::I = 0; 170 // CHECK-NEW-CLASS6-CPP-NEXT: } // namespace 171 // CHECK-NEW-CLASS6-CPP-SAME: {{[[:space:]]}} 172 // CHECK-NEW-CLASS6-CPP-NEXT: namespace a { 173 // CHECK-NEW-CLASS6-CPP-NEXT: static const int K4 = HelperC3::I; 174 // CHECK-NEW-CLASS6-CPP-SAME: {{[[:space:]]}} 175 // CHECK-NEW-CLASS6-CPP-NEXT: int Class6::f() { 176 // CHECK-NEW-CLASS6-CPP-NEXT: int R = K4; 177 // CHECK-NEW-CLASS6-CPP-NEXT: return R; 178 // CHECK-NEW-CLASS6-CPP-NEXT: } 179 // CHECK-NEW-CLASS6-CPP-NEXT: } // namespace a 180 181 // CHECK-OLD-CLASS6-CPP-NOT: class HelperC3 { 182 // CHECK-OLD-CLASS6-CPP-NOT: int HelperC3::I = 0; 183 // CHECK-OLD-CLASS6-CPP-NOT: static const int K4 = HelperC3::I; 184 185 186 // ---------------------------------------------------------------------------- 187 // Test moving classes where its methods use helpers. 188 // ---------------------------------------------------------------------------- 189 // RUN: cp %S/Inputs/helper_decls_test* %T/used-helper-decls/ 190 // 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 191 // RUN: FileCheck -input-file=%T/used-helper-decls/new_helper_decls_test.cpp -check-prefix=CHECK-NEW-CLASS7-CPP %s 192 // RUN: FileCheck -input-file=%T/used-helper-decls/helper_decls_test.cpp -check-prefix=CHECK-OLD-CLASS7-CPP %s 193 194 // CHECK-NEW-CLASS7-CPP: #include "{{.*}}new_helper_decls_test.h" 195 // CHECK-NEW-CLASS7-CPP-SAME: {{[[:space:]]}} 196 // CHECK-NEW-CLASS7-CPP-NEXT: namespace a { 197 // CHECK-NEW-CLASS7-CPP-NEXT: static const int K6 = 6; 198 // CHECK-NEW-CLASS7-CPP-SAME: {{[[:space:]]}} 199 // CHECK-NEW-CLASS7-CPP-NEXT: static void HelperFun6() {} 200 // CHECK-NEW-CLASS7-CPP-SAME: {{[[:space:]]}} 201 // CHECK-NEW-CLASS7-CPP-NEXT: int Class7::f() { 202 // CHECK-NEW-CLASS7-CPP-NEXT: int R = K6; 203 // CHECK-NEW-CLASS7-CPP-NEXT: return R; 204 // CHECK-NEW-CLASS7-CPP-NEXT: } 205 // CHECK-NEW-CLASS7-CPP-SAME: {{[[:space:]]}} 206 // CHECK-NEW-CLASS7-CPP-NEXT: int Class7::g() { 207 // CHECK-NEW-CLASS7-CPP-NEXT: HelperFun6(); 208 // CHECK-NEW-CLASS7-CPP-NEXT: return 1; 209 // CHECK-NEW-CLASS7-CPP-NEXT: } 210 // CHECK-NEW-CLASS7-CPP-NEXT: } // namespace a 211 // 212 // CHECK-OLD-CLASS7-CPP-NOT: static const int K6 = 6; 213 // CHECK-OLD-CLASS7-CPP-NOT: static void HelperFun6() {} 214 // CHECK-OLD-CLASS7-CPP-NOT: int Class7::f() { 215 // CHECK-OLD-CLASS7-CPP-NOT: int Class7::g() { 216 217 218 // ---------------------------------------------------------------------------- 219 // Test moving helper function and its transitively used helper variables. 220 // ---------------------------------------------------------------------------- 221 // RUN: cp %S/Inputs/helper_decls_test* %T/used-helper-decls/ 222 // 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 223 // RUN: FileCheck -input-file=%T/used-helper-decls/new_helper_decls_test.cpp -check-prefix=CHECK-NEW-FUN1-CPP %s 224 // RUN: FileCheck -input-file=%T/used-helper-decls/helper_decls_test.cpp -check-prefix=CHECK-OLD-FUN1-CPP %s 225 226 // CHECK-NEW-FUN1-CPP: #include "{{.*}}new_helper_decls_test.h" 227 // CHECK-NEW-FUN1-CPP-SAME: {{[[:space:]]}} 228 // CHECK-NEW-FUN1-CPP-NEXT: namespace a { 229 // CHECK-NEW-FUN1-CPP-NEXT: static const int K5 = 5; 230 // CHECK-NEW-FUN1-CPP-SAME: {{[[:space:]]}} 231 // CHECK-NEW-FUN1-CPP-NEXT: static int HelperFun5() { 232 // CHECK-NEW-FUN1-CPP-NEXT: int R = K5; 233 // CHECK-NEW-FUN1-CPP-NEXT: return R; 234 // CHECK-NEW-FUN1-CPP-NEXT: } 235 // CHECK-NEW-FUN1-CPP-SAME: {{[[:space:]]}} 236 // CHECK-NEW-FUN1-CPP-NEXT: void Fun1() { HelperFun5(); } 237 // CHECK-NEW-FUN1-CPP-NEXT: } // namespace a 238 239 // CHECK-OLD-FUN1-CPP-NOT: static const int K5 = 5; 240 // CHECK-OLD-FUN1-CPP-NOT: static int HelperFun5() { 241 // CHECK-OLD-FUN1-CPP-NOT: void Fun1() { HelperFun5(); } 242 243 244 // ---------------------------------------------------------------------------- 245 // Test no moving helpers when moving inline functions in header. 246 // ---------------------------------------------------------------------------- 247 // RUN: cp %S/Inputs/helper_decls_test* %T/used-helper-decls/ 248 // 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 249 // RUN: FileCheck -input-file=%T/used-helper-decls/new_helper_decls_test.cpp -check-prefix=CHECK-NEW-FUN2-CPP %s 250 // RUN: FileCheck -input-file=%T/used-helper-decls/new_helper_decls_test.h -check-prefix=CHECK-NEW-FUN2-H %s 251 // RUN: FileCheck -input-file=%T/used-helper-decls/helper_decls_test.h -check-prefix=CHECK-OLD-FUN2-H %s 252 253 // CHECK-NEW-FUN2-H: namespace a { 254 // CHECK-NEW-FUN2-H-NEXT: inline void Fun2() {} 255 // CHECK-NEW-FUN2-H-NEXT: } // namespace a 256 257 // CHECK-NEW-FUN2-CPP: #include "{{.*}}new_helper_decls_test.h" 258 // CHECK-NEW-FUN2-CPP-SAME: {{[[:space:]]}} 259 260 // CHECK-OLD-FUN2-H-NOT: inline void Fun2() {} 261 262 // ---------------------------------------------------------------------------- 263 // Test moving used helper function and its transitively used functions. 264 // ---------------------------------------------------------------------------- 265 // RUN: cp %S/Inputs/helper_decls_test* %T/used-helper-decls/ 266 // 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 267 // RUN: FileCheck -input-file=%T/used-helper-decls/new_helper_decls_test.cpp -check-prefix=CHECK-NEW-FUN3-CPP %s 268 // RUN: FileCheck -input-file=%T/used-helper-decls/helper_decls_test.cpp -check-prefix=CHECK-OLD-FUN3-CPP %s 269 270 // CHECK-NEW-FUN3-CPP: #include "{{.*}}new_helper_decls_test.h" 271 // CHECK-NEW-FUN3-CPP-SAME: {{[[:space:]]}} 272 // CHECK-NEW-FUN3-CPP-NEXT: namespace b { 273 // CHECK-NEW-FUN3-CPP-NEXT: namespace { 274 // CHECK-NEW-FUN3-CPP-NEXT: void HelperFun7(); 275 // CHECK-NEW-FUN3-CPP-SAME: {{[[:space:]]}} 276 // CHECK-NEW-FUN3-CPP-NEXT: class HelperC4; 277 // CHECK-NEW-FUN3-CPP-NEXT: } // namespace 278 // CHECK-NEW-FUN3-CPP-SAME: {{[[:space:]]}} 279 // CHECK-NEW-FUN3-CPP-NEXT: void Fun3() { 280 // CHECK-NEW-FUN3-CPP-NEXT: HelperFun7(); 281 // CHECK-NEW-FUN3-CPP-NEXT: HelperC4 *t; 282 // CHECK-NEW-FUN3-CPP-NEXT: } 283 // CHECK-NEW-FUN3-CPP-NEXT: namespace { 284 // CHECK-NEW-FUN3-CPP-NEXT: void HelperFun7() {} 285 // CHECK-NEW-FUN3-CPP-SAME: {{[[:space:]]}} 286 // CHECK-NEW-FUN3-CPP-NEXT: class HelperC4 {}; 287 // CHECK-NEW-FUN3-CPP-NEXT: } // namespace 288 // CHECK-NEW-FUN3-CPP-NEXT: } // namespace b 289 // 290 // CHECK-OLD-FUN3-CPP-NOT: void HelperFun7(); 291 // CHECK-OLD-FUN3-CPP-NOT: void HelperFun7() {} 292 // CHECK-OLD-FUN3-CPP-NOT: void Fun3() { HelperFun7(); } 293 294 // ---------------------------------------------------------------------------- 295 // Test moving all symbols in headers. 296 // ---------------------------------------------------------------------------- 297 // RUN: cp %S/Inputs/helper_decls_test* %T/used-helper-decls/ 298 // 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 299 // RUN: FileCheck -input-file=%T/used-helper-decls/new_helper_decls_test.h -check-prefix=CHECK-NEW-H %s 300 // RUN: FileCheck -input-file=%T/used-helper-decls/new_helper_decls_test.cpp -check-prefix=CHECK-NEW-CPP %s 301 // RUN: FileCheck -input-file=%T/used-helper-decls/helper_decls_test.h -allow-empty -check-prefix=CHECK-EMPTY %s 302 // RUN: FileCheck -input-file=%T/used-helper-decls/helper_decls_test.cpp -allow-empty -check-prefix=CHECK-EMPTY %s 303 304 305 // CHECK-NEW-H: namespace a { 306 // CHECK-NEW-H-NEXT: class Class1 { 307 // CHECK-NEW-H-NEXT: void f(); 308 // CHECK-NEW-H-NEXT: }; 309 // CHECK-NEW-H-SAME: {{[[:space:]]}} 310 // CHECK-NEW-H-NEXT: class Class2 { 311 // CHECK-NEW-H-NEXT: void f(); 312 // CHECK-NEW-H-NEXT: }; 313 // CHECK-NEW-H-SAME: {{[[:space:]]}} 314 // CHECK-NEW-H-NEXT: class Class3 { 315 // CHECK-NEW-H-NEXT: void f(); 316 // CHECK-NEW-H-NEXT: }; 317 // CHECK-NEW-H-SAME: {{[[:space:]]}} 318 // CHECK-NEW-H-NEXT: class Class4 { 319 // CHECK-NEW-H-NEXT: void f(); 320 // CHECK-NEW-H-NEXT: }; 321 // CHECK-NEW-H-SAME: {{[[:space:]]}} 322 // CHECK-NEW-H-NEXT: class Class5 { 323 // CHECK-NEW-H-NEXT: void f(); 324 // CHECK-NEW-H-NEXT: }; 325 // CHECK-NEW-H-SAME: {{[[:space:]]}} 326 // CHECK-NEW-H-NEXT: class Class6 { 327 // CHECK-NEW-H-NEXT: int f(); 328 // CHECK-NEW-H-NEXT: }; 329 // CHECK-NEW-H-SAME: {{[[:space:]]}} 330 // CHECK-NEW-H-NEXT: class Class7 { 331 // CHECK-NEW-H-NEXT: int f(); 332 // CHECK-NEW-H-NEXT: int g(); 333 // CHECK-NEW-H-NEXT: }; 334 // CHECK-NEW-H-SAME: {{[[:space:]]}} 335 // CHECK-NEW-H-NEXT: void Fun1(); 336 // CHECK-NEW-H-SAME: {{[[:space:]]}} 337 // CHECK-NEW-H-NEXT: inline void Fun2() {} 338 // CHECK-NEW-H-SAME: {{[[:space:]]}} 339 // CHECK-NEW-H-NEXT: } // namespace a 340 341 342 // CHECK-NEW-CPP: namespace { 343 // CHECK-NEW-CPP-NEXT: class HelperC1 { 344 // CHECK-NEW-CPP-NEXT: public: 345 // CHECK-NEW-CPP-NEXT: static int I; 346 // CHECK-NEW-CPP-NEXT: }; 347 // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 348 // CHECK-NEW-CPP-NEXT: int HelperC1::I = 0; 349 // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 350 // CHECK-NEW-CPP-NEXT: class HelperC2 {}; 351 // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 352 // CHECK-NEW-CPP-NEXT: class HelperC3 { 353 // CHECK-NEW-CPP-NEXT: public: 354 // CHECK-NEW-CPP-NEXT: static int I; 355 // CHECK-NEW-CPP-NEXT: }; 356 // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 357 // CHECK-NEW-CPP-NEXT: int HelperC3::I = 0; 358 // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 359 // CHECK-NEW-CPP-NEXT: void HelperFun1() {} 360 // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 361 // CHECK-NEW-CPP-NEXT: void HelperFun2() { HelperFun1(); } 362 // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 363 // CHECK-NEW-CPP-NEXT: const int K1 = 1; 364 // CHECK-NEW-CPP-NEXT: } // namespace 365 // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 366 // CHECK-NEW-CPP-NEXT: static const int K2 = 2; 367 // CHECK-NEW-CPP-NEXT: static void HelperFun3() { K2; } 368 // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 369 // CHECK-NEW-CPP-NEXT: namespace a { 370 // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 371 // CHECK-NEW-CPP-NEXT: static const int K3 = 3; 372 // CHECK-NEW-CPP-NEXT: static const int K4 = HelperC3::I; 373 // CHECK-NEW-CPP-NEXT: static const int K5 = 5; 374 // CHECK-NEW-CPP-NEXT: static const int K6 = 6; 375 // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 376 // CHECK-NEW-CPP-NEXT: static void HelperFun4() {} 377 // CHECK-NEW-CPP-NEXT: static void HelperFun6() {} 378 // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 379 // CHECK-NEW-CPP-NEXT: void Class1::f() { HelperFun2(); } 380 // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 381 // CHECK-NEW-CPP-NEXT: void Class2::f() { 382 // CHECK-NEW-CPP-NEXT: HelperFun1(); 383 // CHECK-NEW-CPP-NEXT: HelperFun3(); 384 // CHECK-NEW-CPP-NEXT: } 385 // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 386 // CHECK-NEW-CPP-NEXT: void Class3::f() { HelperC1::I; } 387 // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 388 // CHECK-NEW-CPP-NEXT: void Class4::f() { HelperC2 c2; } 389 // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 390 // CHECK-NEW-CPP-NEXT: void Class5::f() { 391 // CHECK-NEW-CPP-NEXT: int Result = K1 + K2 + K3; 392 // CHECK-NEW-CPP-NEXT: HelperFun4(); 393 // CHECK-NEW-CPP-NEXT: } 394 // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 395 // CHECK-NEW-CPP-NEXT: int Class6::f() { 396 // CHECK-NEW-CPP-NEXT: int R = K4; 397 // CHECK-NEW-CPP-NEXT: return R; 398 // CHECK-NEW-CPP-NEXT: } 399 // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 400 // CHECK-NEW-CPP-NEXT: int Class7::f() { 401 // CHECK-NEW-CPP-NEXT: int R = K6; 402 // CHECK-NEW-CPP-NEXT: return R; 403 // CHECK-NEW-CPP-NEXT: } 404 // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 405 // CHECK-NEW-CPP-NEXT: int Class7::g() { 406 // CHECK-NEW-CPP-NEXT: HelperFun6(); 407 // CHECK-NEW-CPP-NEXT: return 1; 408 // CHECK-NEW-CPP-NEXT: } 409 // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 410 // CHECK-NEW-CPP-NEXT: static int HelperFun5() { 411 // CHECK-NEW-CPP-NEXT: int R = K5; 412 // CHECK-NEW-CPP-NEXT: return R; 413 // CHECK-NEW-CPP-NEXT: } 414 // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 415 // CHECK-NEW-CPP-NEXT: void Fun1() { HelperFun5(); } 416 // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 417 // CHECK-NEW-CPP-NEXT: } // namespace a 418 // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 419 // CHECK-NEW-CPP-NEXT: namespace b { 420 // CHECK-NEW-CPP-NEXT: namespace { 421 // CHECK-NEW-CPP-NEXT: void HelperFun7(); 422 // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 423 // CHECK-NEW-CPP-NEXT: class HelperC4; 424 // CHECK-NEW-CPP-NEXT: } // namespace 425 // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 426 // CHECK-NEW-CPP-NEXT: void Fun3() { 427 // CHECK-NEW-CPP-NEXT: HelperFun7(); 428 // CHECK-NEW-CPP-NEXT: HelperC4 *t; 429 // CHECK-NEW-CPP-NEXT: } 430 // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 431 // CHECK-NEW-CPP-NEXT: namespace { 432 // CHECK-NEW-CPP-NEXT: void HelperFun7() {} 433 // CHECK-NEW-CPP-SAME: {{[[:space:]]}} 434 // CHECK-NEW-CPP-NEXT: class HelperC4 {}; 435 // CHECK-NEW-CPP-NEXT: } // namespace 436 // CHECK-NEW-CPP-NEXT: } // namespace b 437 438 // CHECK-EMPTY: {{^}}{{$}} 439