// RUN: %target-run-simple-swift | %FileCheck %s // REQUIRES: executable_test private var backingX = 0 var x: Int { _read { print("read: yielding \(backingX).") yield backingX backingX += 1 } _modify { var temp = backingX print("modify: current value is \(temp).") yield &temp print("modify: incoming value is \(temp).") if temp >= backingX { print("modify: accepting.") backingX = temp } else { print("modify: rejecting.") } print("modify: resulting value is \(backingX).") } } // CHECK: 0: begin. print("0: begin.") // CHECK-NEXT: read: yielding 0. // CHECK-NEXT: 1: current value of x is 0. print("1: current value of x is \(x).") // CHECK-NEXT: read: yielding 1. // CHECK-NEXT: 2: current value of x is 1. print("2: current value of x is \(x).") // CHECK-NEXT: modify: current value is 2. // CHECK-NEXT: modify: incoming value is -8. // CHECK-NEXT: modify: rejecting. // CHECK-NEXT: modify: resulting value is 2. x -= 10 // CHECK-NEXT: read: yielding 2. // CHECK-NEXT: 3: current value of x is 2. print("3: current value of x is \(x).") // CHECK-NEXT: modify: current value is 3. // CHECK-NEXT: modify: incoming value is 13. // CHECK-NEXT: modify: accepting. // CHECK-NEXT: modify: resulting value is 13. x += 10 // CHECK-NEXT: read: yielding 13. // CHECK-NEXT: 4: current value of x is 13. print("4: current value of x is \(x).") // CHECK-NEXT: 5: end. print("5: end.")