mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
382 lines
11 KiB
Swift
382 lines
11 KiB
Swift
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()
|
|
}
|
|
|
|
func testSwitchExpand() {
|
|
enum AccountType {
|
|
case savings, checking
|
|
}
|
|
let account: AccountType = .savings
|
|
switch account { }
|
|
}
|
|
|
|
func testExpandTernaryExpr() {
|
|
let a = 3
|
|
let b = 5
|
|
let x = a < 5 ? a : b
|
|
}
|
|
|
|
func testConvertToTernaryExpr() {
|
|
let a = 3
|
|
let b = 5
|
|
let x: Int
|
|
if a < 5 {
|
|
x = a
|
|
} else {
|
|
x = b
|
|
}
|
|
}
|
|
|
|
// 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
|
|
|
|
// RUN: %refactor -source-filename %s -pos=225:3 | %FileCheck %s -check-prefix=CHECK-EXPAND-SWITCH
|
|
|
|
// RUN: %refactor -source-filename %s -pos=231:3 -end-pos=231:24 | %FileCheck %s -check-prefix=CHECK-EXPAND-TERNARY-EXPRESSEXPRESSION
|
|
|
|
// RUN: %refactor -source-filename %s -pos=237:3 -end-pos=242:4 | %FileCheck %s -check-prefix=CHECK-CONVERT-TO-TERNARY-EXPRESSEXPRESSION
|
|
|
|
// 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
|
|
|
|
// CHECK-EXPAND-SWITCH: Expand Switch Cases
|
|
|
|
// CHECK-EXPAND-TERNARY-EXPRESSEXPRESSION: Expand Ternary Expression
|
|
|
|
// CHECK-CONVERT-TO-TERNARY-EXPRESSEXPRESSION: Convert To Ternary Expression
|