blob: 99edb0a146d210af895c808acc2217799c92f015 [file] [log] [blame]
func foo() -> Int{
var aaa = 1 + 2
aaa = aaa + 3
if aaa == 3 { aaa = 4 }
return aaa
}
func foo1(a : Int) -> Int {
switch a {
case 1:
return 0
case 2:
return 1
default:
return a
}
}
func foo8(a : [Int]) {
for v in a {
if v > 3 {
break
}
if v < 3 {
continue
}
}
}
protocol P1 {
func foo()
func foo1()
}
class C1 : P1 {
func foo1() {}
}
class C2 : P1 {
func foo() {}
}
class C3 : P1 {}
protocol P2 {
associatedtype T1
associatedtype T2
func foo1()
}
class C4 : P2 {}
class C5 : P2 {
typealias T1 = Int
func foo1() {}
}
class C6 : P2 {
typealias T1 = Int
typealias T2 = Int
}
class C7 : P2 {
typealias T2 = Int
func foo1() {}
}
class C8 : P2 {
typealias T1 = Int
typealias T2 = Int
func foo1() {}
}
class C9 {}
extension C9 : P1 {}
extension C9 : P2 {}
class C10 {}
extension C10 : P1 {
func foo() {}
func foo1() {}
}
extension C10 : P2 {
typealias T1 = Int
typealias T2 = Int
func foo1() {}
}
class C11 {}
extension C11 : P1 {
func foo() {}
}
extension C11 : P2 {
typealias T1 = Int
typealias T2 = Int
}
class C12 {}
extension C12 : P1 {
func foo1() {}
}
extension C12 : P2 {
typealias T1 = Int
func foo1() {}
}
class C13 {}
extension C13 : P1 {
func foo() {}
func foo1() {}
}
extension C13 : P2 {
typealias T1 = Int
func foo1() {}
}
class C14 {}
extension C14 : P1 {
func foo() {}
}
extension C14 : P2 {
typealias T1 = Int
typealias T2 = Int
func foo1() {}
}
protocol P3 {
func foo3()
func foo4()
}
extension C14: P3 {
func foo3()
}
enum E {
case e1
case e2
case e3
}
func foo2(_ e : E) -> Int{
switch(e) {
case .e1:
case .e2:
return 0;
default:
return 1;
}
}
func testInout(_ a : inout Int) {
var b = a + 1 + 1
b = b + 1
testInout(&b)
}
func testBranch1(_ a : Bool) {
if a {
return
} else {
return
}
}
func testBranch2(_ a : Bool) {
if a {
return
}
}
func testBranch3(_ a : Bool) -> Int {
if a {
return 0
} else {
return 1
}
}
func testBranch4(_ a : Bool) -> Int {
if a {
return 0
}
}
func testStringLiteral() -> String {
let name = "Jason"
print("Hello, \(name)!")
return "abc"
}
func testCollapseNestedIf() {
let a = 3
if a > 2 {
if a < 10 {}
}
}
func testMultiConditionalNestedIf() {
let a = 3
if a > 2, a != 4 {
if a < 10 {}
}
}
func testExtraDeclNestedIf() {
let a = 3
if a > 2 {
if a < 10 {}
let b = 0
}
}
func testExtraIfNestedIf() {
let a = 3
if a > 2 {
if a < 10 {}
let b = 0
}
}
func testStringInterpolation() -> String {
let name = "Jason"
let one = "\(1)"
let _ = "aaa" + "bbb"
let _ = name + "Bourne"
let _ = name + one
}
func testForceTry() {
func throwingFunc() throws -> Int { return 3 }
let _ = try! throwingFunc()
}
// RUN: %refactor -source-filename %s -pos=2:1 -end-pos=5:13 | %FileCheck %s -check-prefix=CHECK1
// RUN: %refactor -source-filename %s -pos=3:1 -end-pos=5:13 | %FileCheck %s -check-prefix=CHECK1
// RUN: %refactor -source-filename %s -pos=4:1 -end-pos=5:13 | %FileCheck %s -check-prefix=CHECK1
// RUN: %refactor -source-filename %s -pos=5:1 -end-pos=5:13 | %FileCheck %s -check-prefix=CHECK1
// RUN: %refactor -source-filename %s -pos=2:1 -end-pos=2:18 | %FileCheck %s -check-prefix=CHECK2
// RUN: %refactor -source-filename %s -pos=2:1 -end-pos=3:16 | %FileCheck %s -check-prefix=CHECK2
// RUN: %refactor -source-filename %s -pos=2:1 -end-pos=4:26 | %FileCheck %s -check-prefix=CHECK2
// RUN: %refactor -source-filename %s -pos=2:13 -end-pos=2:18 | %FileCheck %s -check-prefix=CHECK3
// RUN: %refactor -source-filename %s -pos=10:1 -end-pos=13:13 | %FileCheck %s -check-prefix=CHECK-NONE
// RUN: %refactor -source-filename %s -pos=12:1 -end-pos=15:13 | %FileCheck %s -check-prefix=CHECK-NONE
// RUN: %refactor -source-filename %s -pos=21:1 -end-pos=23:6 | %FileCheck %s -check-prefix=CHECK-NONE
// RUN: %refactor -source-filename %s -pos=24:1 -end-pos=26:6 | %FileCheck %s -check-prefix=CHECK-NONE
// RUN: %refactor -source-filename %s -pos=21:1 -end-pos=26:6 | %FileCheck %s -check-prefix=CHECK-NONE
// RUN: %refactor -source-filename %s -pos=34:8 | %FileCheck %s -check-prefix=CHECK-RENAME-STUB
// RUN: %refactor -source-filename %s -pos=37:8 | %FileCheck %s -check-prefix=CHECK-RENAME-STUB
// RUN: %refactor -source-filename %s -pos=40:8 | %FileCheck %s -check-prefix=CHECK-RENAME-STUB
// RUN: %refactor -source-filename %s -pos=47:8 | %FileCheck %s -check-prefix=CHECK-RENAME-STUB
// RUN: %refactor -source-filename %s -pos=48:8 | %FileCheck %s -check-prefix=CHECK-RENAME-STUB
// RUN: %refactor -source-filename %s -pos=52:8 | %FileCheck %s -check-prefix=CHECK-RENAME-STUB
// RUN: %refactor -source-filename %s -pos=56:8 | %FileCheck %s -check-prefix=CHECK-RENAME-STUB
// RUN: %refactor -source-filename %s -pos=60:8 | %FileCheck %s -check-prefix=CHECK-RENAME-ONLY
// RUN: %refactor -source-filename %s -pos=66:8 | %FileCheck %s -check-prefix=CHECK-RENAME-ONLY
// RUN: %refactor -source-filename %s -pos=67:12 | %FileCheck %s -check-prefix=CHECK-RENAME-STUB
// RUN: %refactor -source-filename %s -pos=68:12 | %FileCheck %s -check-prefix=CHECK-RENAME-STUB
// RUN: %refactor -source-filename %s -pos=69:8 | %FileCheck %s -check-prefix=CHECK-RENAME-ONLY
// RUN: %refactor -source-filename %s -pos=70:12 | %FileCheck %s -check-prefix=CHECK-RENAME-ONLY
// RUN: %refactor -source-filename %s -pos=74:12 | %FileCheck %s -check-prefix=CHECK-RENAME-ONLY
// RUN: %refactor -source-filename %s -pos=79:8 | %FileCheck %s -check-prefix=CHECK-RENAME-ONLY
// RUN: %refactor -source-filename %s -pos=80:12 | %FileCheck %s -check-prefix=CHECK-RENAME-STUB
// RUN: %refactor -source-filename %s -pos=83:12 | %FileCheck %s -check-prefix=CHECK-RENAME-STUB
// RUN: %refactor -source-filename %s -pos=87:8 | %FileCheck %s -check-prefix=CHECK-RENAME-ONLY
// RUN: %refactor -source-filename %s -pos=88:12 | %FileCheck %s -check-prefix=CHECK-RENAME-STUB
// RUN: %refactor -source-filename %s -pos=91:12 | %FileCheck %s -check-prefix=CHECK-RENAME-STUB
// RUN: %refactor -source-filename %s -pos=95:8 | %FileCheck %s -check-prefix=CHECK-RENAME-ONLY
// RUN: %refactor -source-filename %s -pos=96:12 | %FileCheck %s -check-prefix=CHECK-RENAME-ONLY
// RUN: %refactor -source-filename %s -pos=100:12 | %FileCheck %s -check-prefix=CHECK-RENAME-STUB
// RUN: %refactor -source-filename %s -pos=104:8 | %FileCheck %s -check-prefix=CHECK-RENAME-ONLY
// RUN: %refactor -source-filename %s -pos=105:12 | %FileCheck %s -check-prefix=CHECK-RENAME-ONLY
// RUN: %refactor -source-filename %s -pos=108:12 | %FileCheck %s -check-prefix=CHECK-RENAME-ONLY
// RUN: %refactor -source-filename %s -pos=117:12 | %FileCheck %s -check-prefix=CHECK-RENAME-STUB
// RUN: %refactor -source-filename %s -pos=132:6 | %FileCheck %s -check-prefix=CHECK-EXPAND-DEFAULT
// RUN: %refactor -pos=138:11 -end-pos=138:12 -source-filename %s | %FileCheck %s -check-prefix=CHECK-NONE
// RUN: %refactor -pos=138:11 -end-pos=138:20 -source-filename %s | %FileCheck %s -check-prefix=CHECK3
// RUN: %refactor -pos=139:7 -end-pos=139:8 -source-filename %s | %FileCheck %s -check-prefix=CHECK-NONE
// RUN: %refactor -pos=139:3 -end-pos=139:4 -source-filename %s | %FileCheck %s -check-prefix=CHECK-NONE
// RUN: %refactor -pos=140:13 -end-pos=140:15 -source-filename %s | %FileCheck %s -check-prefix=CHECK2
// RUN: %refactor -pos=144:1 -end-pos=148:4 -source-filename %s | %FileCheck %s -check-prefix=CHECK-EXTRCT-METHOD
// RUN: %refactor -pos=158:1 -end-pos=162:4 -source-filename %s | %FileCheck %s -check-prefix=CHECK-EXTRCT-METHOD
// RUN: %refactor -pos=152:1 -end-pos=154:4 -source-filename %s | %FileCheck %s -check-prefix=CHECK-NONE
// RUN: %refactor -pos=166:1 -end-pos=168:4 -source-filename %s | %FileCheck %s -check-prefix=CHECK-NONE
// RUN: %refactor -source-filename %s -pos=173:12 | %FileCheck %s -check-prefix=CHECK-NONE
// RUN: %refactor -source-filename %s -pos=174:12 | %FileCheck %s -check-prefix=CHECK-LOCALIZE-STRING
// RUN: %refactor -source-filename %s -pos=173:3 -end-pos=173:27| %FileCheck %s -check-prefix=CHECK-EXTRCT-METHOD
// RUN: %refactor -source-filename %s -pos=179:3 | %FileCheck %s -check-prefix=CHECK-COLLAPSE-NESTED-IF-EXPRESSION
// RUN: %refactor -source-filename %s -pos=186:3 | %FileCheck %s -check-prefix=CHECK-COLLAPSE-NESTED-IF-EXPRESSION
// RUN: %refactor -source-filename %s -pos=193:3 | %FileCheck %s -check-prefix=CHECK-NONE
// RUN: %refactor -source-filename %s -pos=201:3 | %FileCheck %s -check-prefix=CHECK-NONE
// RUN: %refactor -source-filename %s -pos=210:11 -end-pos=210:24 | %FileCheck %s -check-prefix=CHECK-STRINGS-INTERPOLATION
// RUN: %refactor -source-filename %s -pos=211:11 -end-pos=211:26 | %FileCheck %s -check-prefix=CHECK-STRINGS-INTERPOLATION
// RUN: %refactor -source-filename %s -pos=212:11 -end-pos=212:21 | %FileCheck %s -check-prefix=CHECK-STRINGS-INTERPOLATION
// RUN: %refactor -source-filename %s -pos=217:11 | %FileCheck %s -check-prefix=CHECK-TRY-CATCH
// RUN: %refactor -source-filename %s -pos=217:12 | %FileCheck %s -check-prefix=CHECK-TRY-CATCH
// RUN: %refactor -source-filename %s -pos=217:13 | %FileCheck %s -check-prefix=CHECK-TRY-CATCH
// RUN: %refactor -source-filename %s -pos=217:14 | %FileCheck %s -check-prefix=CHECK-TRY-CATCH
// CHECK1: Action begins
// CHECK1-NEXT: Extract Method
// CHECK1-NEXT: Action ends
// CHECK2: Action begins
// CHECK2-NEXT: Action ends
// CHECK3: Action begins
// CHECK3-NEXT: Extract Expression
// CHECK3-NEXT: Extract Method
// CHECK3-NEXT: Extract Repeated Expression
// CHECK3-NEXT: Action ends
// CHECK-NONE: Action begins
// CHECK-NONE-NEXT: Action ends
// CHECK-RENAME-STUB: Action begins
// CHECK-RENAME-STUB-NEXT: Rename
// CHECK-RENAME-STUB-NEXT: Add Missing Protocol Requirements
// CHECK-RENAME-STUB-NEXT: Action ends
// CHECK-RENAME-ONLY: Action begins
// CHECK-RENAME-ONLY-NEXT: Rename
// CHECK-RENAME-ONLY-NEXT: Action ends
// CHECK-EXPAND-DEFAULT: Action begins
// CHECK-EXPAND-DEFAULT-NEXT: Expand Default
// CHECK-EXPAND-DEFAULT-NEXT: Action ends
// CHECK-EXTRCT-METHOD: Action begins
// CHECK-EXTRCT-METHOD-NEXT: Extract Method
// CHECK-EXTRCT-METHOD-NEXT: Action ends
// CHECK-LOCALIZE-STRING: Localize String
// CHECK-COLLAPSE-NESTED-IF-EXPRESSION: Collapse Nested If Expression
// CHECK-STRINGS-INTERPOLATION: Convert to String Interpolation
// CHECK-TRY-CATCH: Convert To Do/Catch