xref: /llvm-project/clang/test/Refactor/Extract/FromMethodToFunction.cpp (revision 61f2c3f58c56b235dd0f04a72a7c05adeeb837d2)
1*61f2c3f5SAlex Lorenz // RUN: clang-refactor extract -selection=test:%s %s -- -std=c++11 2>&1 | grep -v CHECK | FileCheck --check-prefixes=CHECK,CHECK-INNER %s
2*61f2c3f5SAlex Lorenz // RUN: clang-refactor extract -selection=test:%s %s -- -std=c++11 -DMULTIPLE 2>&1 | grep -v CHECK | FileCheck --check-prefixes=CHECK,CHECK-OUTER %s
3*61f2c3f5SAlex Lorenz 
4*61f2c3f5SAlex Lorenz #ifdef MULTIPLE
5*61f2c3f5SAlex Lorenz class OuterClass {
6*61f2c3f5SAlex Lorenz #define PREFIX OuterClass ::
7*61f2c3f5SAlex Lorenz #else
8*61f2c3f5SAlex Lorenz #define PREFIX
9*61f2c3f5SAlex Lorenz #endif
10*61f2c3f5SAlex Lorenz 
11*61f2c3f5SAlex Lorenz class AClass {
12*61f2c3f5SAlex Lorenz 
method(int x)13*61f2c3f5SAlex Lorenz   int method(int x) {
14*61f2c3f5SAlex Lorenz     return /*range inner=->+0:38*/1 + 2 * 2;
15*61f2c3f5SAlex Lorenz   }
16*61f2c3f5SAlex Lorenz // CHECK-INNER: 1 'inner' results:
17*61f2c3f5SAlex Lorenz // CHECK-INNER:      static int extracted() {
18*61f2c3f5SAlex Lorenz // CHECK-INNER-NEXT: return 1 + 2 * 2;{{$}}
19*61f2c3f5SAlex Lorenz // CHECK-INNER-NEXT: }{{[[:space:]].*}}
20*61f2c3f5SAlex Lorenz // CHECK-INNER-NEXT: class AClass {
21*61f2c3f5SAlex Lorenz 
22*61f2c3f5SAlex Lorenz // CHECK-OUTER: 1 'inner' results:
23*61f2c3f5SAlex Lorenz // CHECK-OUTER:      static int extracted() {
24*61f2c3f5SAlex Lorenz // CHECK-OUTER-NEXT: return 1 + 2 * 2;{{$}}
25*61f2c3f5SAlex Lorenz // CHECK-OUTER-NEXT: }{{[[:space:]].*}}
26*61f2c3f5SAlex Lorenz // CHECK-OUTER-NEXT: class OuterClass {
27*61f2c3f5SAlex Lorenz 
28*61f2c3f5SAlex Lorenz   int otherMethod(int x);
29*61f2c3f5SAlex Lorenz };
30*61f2c3f5SAlex Lorenz 
31*61f2c3f5SAlex Lorenz #ifdef MULTIPLE
32*61f2c3f5SAlex Lorenz };
33*61f2c3f5SAlex Lorenz #endif
34*61f2c3f5SAlex Lorenz 
otherMethod(int x)35*61f2c3f5SAlex Lorenz int PREFIX AClass::otherMethod(int x) {
36*61f2c3f5SAlex Lorenz   return /*range outofline=->+0:46*/2 * 2 - 1;
37*61f2c3f5SAlex Lorenz }
38*61f2c3f5SAlex Lorenz // CHECK: 1 'outofline' results:
39*61f2c3f5SAlex Lorenz // CHECK:      static int extracted() {
40*61f2c3f5SAlex Lorenz // CHECK-NEXT: return 2 * 2 - 1;{{$}}
41*61f2c3f5SAlex Lorenz // CHECK-NEXT: }{{[[:space:]].*}}
42*61f2c3f5SAlex Lorenz // CHECK-NEXT: int PREFIX AClass::otherMethod
43