17fe441b2SAlex Lorenz // RUN: clang-refactor extract -selection=test:%s %s -- -std=c++11 2>&1 | grep -v CHECK | FileCheck %s 27fe441b2SAlex Lorenz 37fe441b2SAlex Lorenz 47fe441b2SAlex Lorenz void simpleExtractNoCaptures() { 57fe441b2SAlex Lorenz int i = /*range=->+0:33*/1 + 2; 67fe441b2SAlex Lorenz } 77fe441b2SAlex Lorenz 87fe441b2SAlex Lorenz // CHECK: 1 '' results: 97fe441b2SAlex Lorenz // CHECK: static int extracted() { 107fe441b2SAlex Lorenz // CHECK-NEXT: return 1 + 2;{{$}} 117fe441b2SAlex Lorenz // CHECK-NEXT: }{{[[:space:]].*}} 127fe441b2SAlex Lorenz // CHECK-NEXT: void simpleExtractNoCaptures() { 137fe441b2SAlex Lorenz // CHECK-NEXT: int i = /*range=->+0:33*/extracted();{{$}} 147fe441b2SAlex Lorenz // CHECK-NEXT: } 157fe441b2SAlex Lorenz 167fe441b2SAlex Lorenz void simpleExtractStmtNoCaptures() { 177fe441b2SAlex Lorenz /*range astatement=->+1:13*/int a = 1; 187fe441b2SAlex Lorenz int b = 2; 197fe441b2SAlex Lorenz } 207fe441b2SAlex Lorenz // CHECK: 1 'astatement' results: 217fe441b2SAlex Lorenz // CHECK: static void extracted() { 227fe441b2SAlex Lorenz // CHECK-NEXT: int a = 1; 23*ebbbb812SAlex Lorenz // CHECK-NEXT: int b = 2;{{$}} 247fe441b2SAlex Lorenz // CHECK-NEXT: }{{[[:space:]].*}} 257fe441b2SAlex Lorenz // CHECK-NEXT: void simpleExtractStmtNoCaptures() { 26*ebbbb812SAlex Lorenz // CHECK-NEXT: /*range astatement=->+1:13*/extracted();{{$}} 277fe441b2SAlex Lorenz // CHECK-NEXT: } 287fe441b2SAlex Lorenz 297fe441b2SAlex Lorenz 307fe441b2SAlex Lorenz void blankRangeNoExtraction() { 317fe441b2SAlex Lorenz int i = /*range blank=*/1 + 2; 327fe441b2SAlex Lorenz } 337fe441b2SAlex Lorenz 347fe441b2SAlex Lorenz // CHECK: 1 'blank' results: 357fe441b2SAlex Lorenz // CHECK-NEXT: the provided selection does not overlap with the AST nodes of interest 367fe441b2SAlex Lorenz 377fe441b2SAlex Lorenz int outOfBodyCodeNoExtraction = /*range out_of_body_expr=->+0:72*/1 + 2; 387fe441b2SAlex Lorenz 397fe441b2SAlex Lorenz struct OutOfBodyStuff { 407fe441b2SAlex Lorenz int FieldInit = /*range out_of_body_expr=->+0:58*/1 + 2; 417fe441b2SAlex Lorenz 427fe441b2SAlex Lorenz void foo(int x =/*range out_of_body_expr=->+0:58*/1 + 2); 437fe441b2SAlex Lorenz }; 447fe441b2SAlex Lorenz 457fe441b2SAlex Lorenz // CHECK: 3 'out_of_body_expr' results: 467fe441b2SAlex Lorenz // CHECK: the selected code is not a part of a function's / method's body 477fe441b2SAlex Lorenz 487fe441b2SAlex Lorenz void simpleExpressionNoExtraction() { 497fe441b2SAlex Lorenz int i = /*range simple_expr=->+0:41*/1 + /*range simple_expr=->+0:76*/(2); 507fe441b2SAlex Lorenz (void) /*range simple_expr=->+0:40*/i; 517fe441b2SAlex Lorenz (void)/*range simple_expr=->+0:47*/"literal"; 527fe441b2SAlex Lorenz (void)/*range simple_expr=->+0:41*/'c'; 537fe441b2SAlex Lorenz } 547fe441b2SAlex Lorenz 557fe441b2SAlex Lorenz // CHECK: 5 'simple_expr' results: 567fe441b2SAlex Lorenz // CHECK-NEXT: the selected expression is too simple to extract 57