1 // RUN: clang-refactor extract -selection=test:%s %s -- -std=c++14 2>&1 | grep -v CHECK | FileCheck %s 2 3 4 void simpleExtractNoCaptures() { 5 int i = /*range=->+0:33*/1 + 2; 6 } 7 8 // CHECK: 1 '' results: 9 // CHECK: static int extracted() { 10 // CHECK-NEXT: return 1 + 2;{{$}} 11 // CHECK-NEXT: }{{[[:space:]].*}} 12 // CHECK-NEXT: void simpleExtractNoCaptures() { 13 // CHECK-NEXT: int i = /*range=->+0:33*/extracted();{{$}} 14 // CHECK-NEXT: } 15 16 void simpleExtractStmtNoCaptures() { 17 /*range astatement=->+1:13*/int a = 1; 18 int b = 2; 19 } 20 // CHECK: 1 'astatement' results: 21 // CHECK: static void extracted() { 22 // CHECK-NEXT: int a = 1; 23 // CHECK-NEXT: int b = 2;{{$}} 24 // CHECK-NEXT: }{{[[:space:]].*}} 25 // CHECK-NEXT: void simpleExtractStmtNoCaptures() { 26 // CHECK-NEXT: /*range astatement=->+1:13*/extracted();{{$}} 27 // CHECK-NEXT: } 28 29 30 void blankRangeNoExtraction() { 31 int i = /*range blank=*/1 + 2; 32 } 33 34 // CHECK: 1 'blank' results: 35 // CHECK-NEXT: the provided selection does not overlap with the AST nodes of interest 36 37 int outOfBodyCodeNoExtraction = /*range out_of_body_expr=->+0:72*/1 + 2; 38 39 struct OutOfBodyStuff { 40 int FieldInit = /*range out_of_body_expr=->+0:58*/1 + 2; 41 42 void foo(int x =/*range out_of_body_expr=->+0:58*/1 + 2); 43 }; 44 45 auto inFunctionOutOfBody() -> decltype(/*range out_of_body_expr=->+0:79*/1 + 2) { 46 struct OutOfBodyStuff { 47 int FieldInit = /*range out_of_body_expr=->+0:60*/1 + 2; 48 49 void foo(int x =/*range out_of_body_expr=->+0:60*/1 + 2); 50 }; 51 enum E { 52 X = /*range out_of_body_expr=->+0:48*/1 + 2 53 }; 54 int x = 0; 55 using T = decltype(/*range out_of_body_expr=->+0:61*/x + 3); 56 return x; 57 } 58 59 // CHECK: 8 'out_of_body_expr' results: 60 // CHECK: the selected code is not a part of a function's / method's body 61 62 void simpleExpressionNoExtraction() { 63 int i = /*range simple_expr=->+0:41*/1 + /*range simple_expr=->+0:76*/(2); 64 (void) /*range simple_expr=->+0:40*/i; 65 (void)/*range simple_expr=->+0:47*/"literal"; 66 (void)/*range simple_expr=->+0:41*/'c'; 67 } 68 69 // CHECK: 5 'simple_expr' results: 70 // CHECK-NEXT: the selected expression is too simple to extract 71