brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.0 KiB · 865e829 Raw
217 lines · cpp
1// RUN: clang-refactor extract -selection=test:%s %s -- -std=c++11 -fcxx-exceptions | grep -v CHECK | FileCheck %s2 3struct Rectangle { int width, height; };4 5void extractStatement(const Rectangle &r) {6  /*range adeclstmt=->+0:59*/int area = r.width * r.height;7}8// CHECK: 1 'adeclstmt' results:9// CHECK:      static void extracted() {10// CHECK-NEXT: int area = r.width * r.height;{{$}}11// CHECK-NEXT: }{{[[:space:]].*}}12// CHECK-NEXT: void extractStatement(const Rectangle &r) {13// CHECK-NEXT:   /*range adeclstmt=->+0:59*/extracted();{{$}}14// CHECK-NEXT: }15 16void extractStatementNoSemiIf(const Rectangle &r) {17  /*range bextractif=->+2:4*/if (r.width) {18    int x = r.height;19  }20}21// CHECK: 1 'bextractif' results:22// CHECK:      static void extracted() {23// CHECK-NEXT: if (r.width) {24// CHECK-NEXT: int x = r.height;25// CHECK-NEXT: }{{$}}26// CHECK-NEXT: }{{[[:space:]].*}}27// CHECK-NEXT: void extractStatementNoSemiIf(const Rectangle &r) {28// CHECK-NEXT:   /*range bextractif=->+2:4*/extracted();{{$}}29// CHECK-NEXT: }30 31void extractStatementDontExtraneousSemi(const Rectangle &r) {32  /*range cextractif=->+2:4*/if (r.width) {33    int x = r.height;34  } ;35} //^ This semicolon shouldn't be extracted.36// CHECK: 1 'cextractif' results:37// CHECK:      static void extracted() {38// CHECK-NEXT: if (r.width) {39// CHECK-NEXT: int x = r.height;40// CHECK-NEXT: }{{$}}41// CHECK-NEXT: }{{[[:space:]].*}}42// CHECK-NEXT: void extractStatementDontExtraneousSemi(const Rectangle &r) {43// CHECK-NEXT: extracted(); ;{{$}}44// CHECK-NEXT: }45 46void extractStatementNotSemiSwitch() {47  /*range dextract=->+5:4*/switch (2) {48  case 1:49    break;50  case 2:51    break;52  }53}54// CHECK: 1 'dextract' results:55// CHECK:      static void extracted() {56// CHECK-NEXT: switch (2) {57// CHECK-NEXT: case 1:58// CHECK-NEXT:   break;59// CHECK-NEXT: case 2:60// CHECK-NEXT:   break;61// CHECK-NEXT: }{{$}}62// CHECK-NEXT: }{{[[:space:]].*}}63// CHECK-NEXT: void extractStatementNotSemiSwitch() {64// CHECK-NEXT: extracted();{{$}}65// CHECK-NEXT: }66 67 68void extractStatementNotSemiWhile() {69  /*range eextract=->+2:4*/while (true) {70    int x = 0;71  }72}73// CHECK: 1 'eextract' results:74// CHECK:      static void extracted() {75// CHECK-NEXT: while (true) {76// CHECK-NEXT: int x = 0;77// CHECK-NEXT: }{{$}}78// CHECK-NEXT: }{{[[:space:]].*}}79// CHECK-NEXT: void extractStatementNotSemiWhile() {80// CHECK-NEXT: extracted();{{$}}81// CHECK-NEXT: }82 83void extractStatementNotSemiFor() {84  /*range fextract=->+1:4*/for (int i = 0; i < 10; ++i) {85  }86}87// CHECK: 1 'fextract' results:88// CHECK:      static void extracted() {89// CHECK-NEXT: for (int i = 0; i < 10; ++i) {90// CHECK-NEXT: }{{$}}91// CHECK-NEXT: }{{[[:space:]].*}}92// CHECK-NEXT: void extractStatementNotSemiFor() {93// CHECK-NEXT: extracted();{{$}}94// CHECK-NEXT: }95 96struct XS {97  int *begin() { return 0; }98  int *end() { return 0; }99};100 101void extractStatementNotSemiRangedFor(XS xs) {102  /*range gextract=->+1:4*/for (int i : xs) {103  }104}105// CHECK: 1 'gextract' results:106// CHECK:      static void extracted() {107// CHECK-NEXT: for (int i : xs) {108// CHECK-NEXT: }{{$}}109// CHECK-NEXT: }{{[[:space:]].*}}110// CHECK-NEXT: void extractStatementNotSemiRangedFor(XS xs) {111// CHECK-NEXT: extracted();{{$}}112// CHECK-NEXT: }113 114void extractStatementNotSemiRangedTryCatch() {115  /*range hextract=->+3:4*/try { int x = 0; }116  catch (const int &i) {117    int y = i;118  }119}120// CHECK: 1 'hextract' results:121// CHECK:      static void extracted() {122// CHECK-NEXT: try { int x = 0; }123// CHECK-NEXT: catch (const int &i) {124// CHECK-NEXT:   int y = i;125// CHECK-NEXT: }{{$}}126// CHECK-NEXT: }{{[[:space:]].*}}127// CHECK-NEXT: void extractStatementNotSemiRangedTryCatch() {128// CHECK-NEXT: extracted();{{$}}129// CHECK-NEXT: }130 131void extractCantFindSemicolon() {132  /*range iextract=->+1:17*/do {133  } while (true)134  // Add a semicolon in both the extracted and original function as we don't135  // want to extract the semicolon below.136  ;137}138// CHECK: 1 'iextract' results:139// CHECK:      static void extracted() {140// CHECK-NEXT: do {141// CHECK-NEXT: } while (true);{{$}}142// CHECK-NEXT: }{{[[:space:]].*}}143// CHECK-NEXT: void extractCantFindSemicolon() {144// CHECK-NEXT: extracted();{{$}}145// CHECK-NEXT: //146// CHECK-NEXT: //147// CHECK-NEXT: ;148// CHECK-NEXT: }149 150void extractFindSemicolon() {151  /*range jextract=->+1:17*/do {152  } while (true) /*grab*/ ;153}154// CHECK: 1 'jextract' results:155// CHECK:      static void extracted() {156// CHECK-NEXT: do {157// CHECK-NEXT: } while (true) /*grab*/ ;{{$}}158// CHECK-NEXT: }{{[[:space:]].*}}159// CHECK-NEXT: void extractFindSemicolon() {160// CHECK-NEXT: extracted();{{$}}161// CHECK-NEXT: }162 163void call();164 165void careForNonCompoundSemicolons1() {166  /*range kextract=->+1:11*/if (true)167    call();168}169// CHECK: 1 'kextract' results:170// CHECK:      static void extracted() {171// CHECK-NEXT: if (true)172// CHECK-NEXT: call();{{$}}173// CHECK-NEXT: }{{[[:space:]].*}}174// CHECK-NEXT: void careForNonCompoundSemicolons1() {175// CHECK-NEXT: extracted();{{$}}176// CHECK-NEXT: }177 178void careForNonCompoundSemicolons2() {179  /*range lextract=->+3:1*/for (int i = 0; i < 10; ++i)180    while (i != 0)181      ;182  // end right here111!183}184// CHECK: 1 'lextract' results:185// CHECK:      static void extracted() {186// CHECK-NEXT: for (int i = 0; i < 10; ++i)187// CHECK-NEXT: while (i != 0)188// CHECK-NEXT:   ;{{$}}189// CHECK-NEXT: }{{[[:space:]].*}}190// CHECK-NEXT: void careForNonCompoundSemicolons2() {191// CHECK-NEXT: extracted();{{$}}192// CHECK-NEXT: //193// CHECK-NEXT: }194 195void careForSwitchSemicolon() {196  /*range mextract=->+0:53*/switch(0) default: break;197}198// CHECK: 1 'mextract' results:199// CHECK:      static void extracted() {200// CHECK-NEXT: switch(0) default: break;{{$}}201// CHECK-NEXT: }{{[[:space:]].*}}202// CHECK-NEXT: void careForSwitchSemicolon() {203// CHECK-NEXT: extracted();{{$}}204// CHECK-NEXT: }205 206void extractStatementNotSemiDecl() {207  /*range nextract=->+0:38*/int x = 5;208}209// CHECK: 1 'nextract' results:210// CHECK:      static void extracted() {211// CHECK-NEXT: int x = 5;{{$}}212// CHECK-NEXT: }{{[[:space:]].*}}213// CHECK-NEXT: void extractStatementNotSemiDecl() {214// CHECK-NEXT: extracted();{{$}}215// CHECK-NEXT: }216 217