mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
513 lines
15 KiB
Swift
513 lines
15 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 testCollapseNestedIf1() {
|
|
let a = 3
|
|
if a > 2 {
|
|
if a < 10 {}
|
|
}
|
|
}
|
|
|
|
func testCollapseNestedIf2() {
|
|
let a = 3
|
|
if a > 2, a != 4 {
|
|
if a < 10 {}
|
|
}
|
|
}
|
|
|
|
func testCollapseNestedIf3() {
|
|
let a = 3
|
|
if a > 2 {
|
|
if a < 10 {}
|
|
let b = 0
|
|
}
|
|
}
|
|
|
|
func testCollapseNestedIf4() {
|
|
let a = 3
|
|
if a > 2 {
|
|
let b = 0
|
|
if a < 10 {}
|
|
}
|
|
}
|
|
|
|
func testCollapseNestedIf5() {
|
|
let a = 3
|
|
if a > 2 {
|
|
if a < 10 {}
|
|
} else {
|
|
print("else")
|
|
}
|
|
}
|
|
|
|
func testCollapseNestedIf6() {
|
|
let a = 3
|
|
if a > 2 {
|
|
if a < 10 {
|
|
print("if")
|
|
} else if a < 5 {
|
|
print("else")
|
|
}
|
|
}
|
|
}
|
|
|
|
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
|
|
}
|
|
}
|
|
|
|
func testConvertToGuardExpr(idxOpt: Int?) {
|
|
if let idx = idxOpt {
|
|
print(idx)
|
|
}
|
|
}
|
|
|
|
func testConvertToIfLetExpr(idxOpt: Int?) {
|
|
guard let idx = idxOpt else {
|
|
return
|
|
}
|
|
print(idx)
|
|
}
|
|
|
|
@propertyWrapper
|
|
struct TwelveOrLess {
|
|
private var number = 0
|
|
var wrappedValue: Int {
|
|
get { return number }
|
|
set { number = min(newValue, 12) }
|
|
}
|
|
}
|
|
|
|
struct S {
|
|
var field = 2
|
|
let (x, y) = (2, 4)
|
|
@TwelveOrLess var height: Int
|
|
lazy var z = 42
|
|
var totalSteps: Int = 0 {
|
|
willSet(newTotalSteps) {
|
|
print("About to set totalSteps to \(newTotalSteps)")
|
|
}
|
|
}
|
|
}
|
|
|
|
class TestAddEquatable {
|
|
var property = "test"
|
|
private var prop = "test2"
|
|
let pr = "test3"
|
|
}
|
|
|
|
struct TestAddEquatableStruct {
|
|
var property = "test"
|
|
private var prop = "test2"
|
|
let pr = "test3"
|
|
}
|
|
|
|
enum AddEquatableEnum {
|
|
case first
|
|
case second
|
|
}
|
|
|
|
class TestAddEquatableConforming: Equatable {
|
|
var property = "test"
|
|
|
|
public static func ==(lhs: TestAddEquatableConforming,
|
|
rhs: TestAddEquatableConforming) -> Bool {
|
|
return lhs.property == rhs.property
|
|
}
|
|
}
|
|
|
|
struct TestAddEquatableStructConforming: Equatable {
|
|
var property = "test"
|
|
}
|
|
|
|
extension TestAddEquatable {
|
|
func test() -> Bool {
|
|
return false
|
|
}
|
|
}
|
|
|
|
extension TestAddEquatableStructConforming: Equatable {
|
|
public static func ==(lhs: TestAddEquatableConforming,
|
|
rhs: TestAddEquatableConforming) -> Bool {
|
|
return lhs.property == rhs.property
|
|
}
|
|
}
|
|
|
|
// 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=CHECK-CONVERT-TO-COMPUTED-PROPERTY
|
|
// 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-STUB
|
|
// 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-STUB
|
|
// 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-EXTRACT-METHOD
|
|
// RUN: %refactor -pos=158:1 -end-pos=162:4 -source-filename %s | %FileCheck %s -check-prefix=CHECK-EXTRACT-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-EXTRACT-METHOD
|
|
|
|
// RUN: %refactor -source-filename %s -pos=179:3 | %FileCheck %s -check-prefix=CHECK-COLLAPSE-NESTED-IF
|
|
// RUN: %refactor -source-filename %s -pos=186:3 | %FileCheck %s -check-prefix=CHECK-COLLAPSE-NESTED-IF
|
|
// 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=209:3 | %FileCheck %s -check-prefix=CHECK-NONE
|
|
// RUN: %refactor -source-filename %s -pos=218:3 | %FileCheck %s -check-prefix=CHECK-NONE
|
|
|
|
// RUN: %refactor -source-filename %s -pos=230:11 -end-pos=230:24 | %FileCheck %s -check-prefix=CHECK-STRINGS-INTERPOLATION
|
|
// RUN: %refactor -source-filename %s -pos=231:11 -end-pos=231:26 | %FileCheck %s -check-prefix=CHECK-STRINGS-INTERPOLATION
|
|
// RUN: %refactor -source-filename %s -pos=232:11 -end-pos=232:21 | %FileCheck %s -check-prefix=CHECK-STRINGS-INTERPOLATION
|
|
|
|
// RUN: %refactor -source-filename %s -pos=237:11 | %FileCheck %s -check-prefix=CHECK-TRY-CATCH
|
|
// RUN: %refactor -source-filename %s -pos=237:12 | %FileCheck %s -check-prefix=CHECK-TRY-CATCH
|
|
// RUN: %refactor -source-filename %s -pos=237:13 | %FileCheck %s -check-prefix=CHECK-TRY-CATCH
|
|
// RUN: %refactor -source-filename %s -pos=237:14 | %FileCheck %s -check-prefix=CHECK-TRY-CATCH
|
|
|
|
// RUN: %refactor -source-filename %s -pos=245:3 | %FileCheck %s -check-prefix=CHECK-EXPAND-SWITCH
|
|
|
|
// RUN: %refactor -source-filename %s -pos=251:3 -end-pos=251:24 | %FileCheck %s -check-prefix=CHECK-EXPAND-TERNARY-EXPRESSEXPRESSION
|
|
|
|
// RUN: %refactor -source-filename %s -pos=266:3 -end-pos=268:4 | %FileCheck %s -check-prefix=CHECK-CONVERT-TO-GUARD-EXPRESSION
|
|
|
|
// RUN: %refactor -source-filename %s -pos=272:3 -end-pos=275:13 | %FileCheck %s -check-prefix=CHECK-CONVERT-TO-IFLET-EXPRESSION
|
|
|
|
// RUN: %refactor -source-filename %s -pos=288:3 -end-pos=288:16 | %FileCheck %s -check-prefix=CHECK-CONVERT-TO-COMPUTED-PROPERTY
|
|
// RUN: %refactor -source-filename %s -pos=289:3 -end-pos=289:22 | %FileCheck %s -check-prefix=CHECK-IS-NOT-CONVERT-TO-COMPUTED-PROPERTY
|
|
// RUN: %refactor -source-filename %s -pos=290:3 -end-pos=290:32 | %FileCheck %s -check-prefix=CHECK-IS-NOT-CONVERT-TO-COMPUTED-PROPERTY
|
|
// RUN: %refactor -source-filename %s -pos=291:3 -end-pos=291:18 | %FileCheck %s -check-prefix=CHECK-IS-NOT-CONVERT-TO-COMPUTED-PROPERTY
|
|
// RUN: %refactor -source-filename %s -pos=292:3 -end-pos=296:4 | %FileCheck %s -check-prefix=CHECK-IS-NOT-CONVERT-TO-COMPUTED-PROPERTY
|
|
|
|
// RUN: %refactor -source-filename %s -pos=299:16 | %FileCheck %s -check-prefix=CHECK-ADD-EQUATABLE-CONFORMANCE
|
|
// RUN: %refactor -source-filename %s -pos=305:12 | %FileCheck %s -check-prefix=CHECK-ADD-EQUATABLE-CONFORMANCE
|
|
// RUN: %refactor -source-filename %s -pos=311:9 | %FileCheck %s -check-prefix=CHECK-ADD-EQUATABLE-CONFORMANCE-NOT-INCLUDED
|
|
// RUN: %refactor -source-filename %s -pos=316:11 | %FileCheck %s -check-prefix=CHECK-ADD-EQUATABLE-CONFORMANCE-NOT-INCLUDED
|
|
// RUN: %refactor -source-filename %s -pos=325:12 | %FileCheck %s -check-prefix=CHECK-ADD-EQUATABLE-CONFORMANCE-NOT-INCLUDED
|
|
// RUN: %refactor -source-filename %s -pos=329:15 | %FileCheck %s -check-prefix=CHECK-ADD-EQUATABLE-CONFORMANCE
|
|
// RUN: %refactor -source-filename %s -pos=335:15 | %FileCheck %s -check-prefix=CHECK-ADD-EQUATABLE-CONFORMANCE-NOT-INCLUDED
|
|
|
|
// 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-EXTRACT-METHOD: Action begins
|
|
// CHECK-EXTRACT-METHOD-NEXT: Extract Method
|
|
// CHECK-EXTRACT-METHOD-NEXT: Action ends
|
|
|
|
// CHECK-LOCALIZE-STRING: Localize String
|
|
|
|
// CHECK-COLLAPSE-NESTED-IF: Collapse Nested If Statements
|
|
|
|
// 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
|
|
|
|
// CHECK-CONVERT-TO-GUARD-EXPRESSION: Convert To Guard Expression
|
|
|
|
// CHECK-CONVERT-TO-IFLET-EXPRESSION: Convert To IfLet Expression
|
|
|
|
// CHECK-CONVERT-TO-COMPUTED-PROPERTY: Convert To Computed Property
|
|
|
|
// CHECK-IS-NOT-CONVERT-TO-COMPUTED-PROPERTY: Action begins
|
|
// CHECK-IS-NOT-CONVERT-TO-COMPUTED-PROPERTY-NOT: Convert To Computed Property
|
|
// CHECK-IS-NOT-CONVERT-TO-COMPUTED-PROPERTY: Action ends
|
|
|
|
// CHECK-ADD-EQUATABLE-CONFORMANCE: Add Equatable Conformance
|
|
|
|
// CHECK-ADD-EQUATABLE-CONFORMANCE-NOT-INCLUDED: Action begins
|
|
// CHECK-ADD-EQUATABLE-CONFORMANCE-NOT-INCLUDED-NOT: Add Equatable Conformance
|
|
// CHECK-ADD-EQUATABLE-CONFORMANCE-NOT-INCLUDED: Action ends
|