// RUN: clang-refactor extract -selection=test:%s %s -- 2>&1 | grep -v CHECK | FileCheck %s

@interface NSArray
+ (id)arrayWithObjects:(const id [])objects count:(unsigned long)cnt;
@end

void extractStatementNoSemiObjCFor(NSArray *array) {
  /*range astmt=->+2:4*/for (id i in array) {
    int x = 0;
  }
}
// CHECK: 1 'astmt' results:
// CHECK:      static void extracted() {
// CHECK-NEXT: for (id i in array) {
// CHECK-NEXT: int x = 0;
// CHECK-NEXT: }{{$}}
// CHECK-NEXT: }{{[[:space:]].*}}

void extractStatementNoSemiSync() {
  id lock;
  /*range bstmt=->+2:4*/@synchronized(lock) {
    int x = 0;
  }
}
// CHECK: 1 'bstmt' results:
// CHECK:      static void extracted() {
// CHECK-NEXT: @synchronized(lock) {
// CHECK-NEXT: int x = 0;
// CHECK-NEXT: }{{$}}
// CHECK-NEXT: }{{[[:space:]].*}}

void extractStatementNoSemiAutorel() {
  /*range cstmt=->+2:4*/@autoreleasepool {
    int x = 0;
  }
}
// CHECK: 1 'cstmt' results:
// CHECK:      static void extracted() {
// CHECK-NEXT: @autoreleasepool {
// CHECK-NEXT: int x = 0;
// CHECK-NEXT: }{{$}}
// CHECK-NEXT: }{{[[:space:]].*}}

void extractStatementNoSemiTryFinalllllly() {
  /*range dstmt=->+3:4*/@try {
    int x = 0;
  } @finally {
  }
}
// CHECK: 1 'dstmt' results:
// CHECK:      static void extracted() {
// CHECK-NEXT: @try {
// CHECK-NEXT: int x = 0;
// CHECK-NEXT: } @finally {
// CHECK-NEXT: }{{$}}
// CHECK-NEXT: }{{[[:space:]].*}}
