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