reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced
    1
    2
    3
    4
    5
    6
    7
    8
    9
   10
   11
   12
   13
   14
   15
   16
   17
   18
   19
   20
   21
   22
   23
   24
   25
   26
   27
   28
   29
   30
   31
   32
   33
   34
   35
   36
   37
   38
   39
   40
   41
   42
   43
   44
   45
   46
   47
   48
   49
   50
   51
   52
   53
   54
   55
   56
   57
   58
   59
   60
   61
   62
   63
   64
   65
   66
   67
   68
   69
   70
// RUN: clang-refactor extract -selection=test:%s %s -- -std=c++14 2>&1 | grep -v CHECK | FileCheck %s


void simpleExtractNoCaptures() {
  int i = /*range=->+0:33*/1 + 2;
}

// CHECK: 1 '' results:
// CHECK:      static int extracted() {
// CHECK-NEXT: return 1 + 2;{{$}}
// CHECK-NEXT: }{{[[:space:]].*}}
// CHECK-NEXT: void simpleExtractNoCaptures() {
// CHECK-NEXT:   int i = /*range=->+0:33*/extracted();{{$}}
// CHECK-NEXT: }

void simpleExtractStmtNoCaptures() {
  /*range astatement=->+1:13*/int a = 1;
  int b = 2;
}
// CHECK: 1 'astatement' results:
// CHECK:      static void extracted() {
// CHECK-NEXT: int a = 1;
// CHECK-NEXT: int b = 2;{{$}}
// CHECK-NEXT: }{{[[:space:]].*}}
// CHECK-NEXT: void simpleExtractStmtNoCaptures() {
// CHECK-NEXT:   /*range astatement=->+1:13*/extracted();{{$}}
// CHECK-NEXT: }


void blankRangeNoExtraction() {
  int i = /*range blank=*/1 + 2;
}

// CHECK: 1 'blank' results:
// CHECK-NEXT: the provided selection does not overlap with the AST nodes of interest

int outOfBodyCodeNoExtraction = /*range out_of_body_expr=->+0:72*/1 + 2;

struct OutOfBodyStuff {
  int FieldInit = /*range out_of_body_expr=->+0:58*/1 + 2;

  void foo(int x =/*range out_of_body_expr=->+0:58*/1 + 2);
};

auto inFunctionOutOfBody() -> decltype(/*range out_of_body_expr=->+0:79*/1 + 2) {
  struct OutOfBodyStuff {
    int FieldInit = /*range out_of_body_expr=->+0:60*/1 + 2;

    void foo(int x =/*range out_of_body_expr=->+0:60*/1 + 2);
  };
  enum E {
    X = /*range out_of_body_expr=->+0:48*/1 + 2
  };
  int x = 0;
  using T = decltype(/*range out_of_body_expr=->+0:61*/x + 3);
  return x;
}

// CHECK: 8 'out_of_body_expr' results:
// CHECK: the selected code is not a part of a function's / method's body

void simpleExpressionNoExtraction() {
  int i = /*range simple_expr=->+0:41*/1 + /*range simple_expr=->+0:76*/(2);
  (void) /*range simple_expr=->+0:40*/i;
  (void)/*range simple_expr=->+0:47*/"literal";
  (void)/*range simple_expr=->+0:41*/'c';
}

// CHECK: 5 'simple_expr' results:
// CHECK-NEXT: the selected expression is too simple to extract