// RUN: %target-run-simple-swift(-Xfrontend -sil-verify-all) | %FileCheck %s // RUN: %target-run-simple-swift(-O -Xfrontend -sil-verify-all) | %FileCheck %s // REQUIRES: executable_test public struct BufferView: ~Copyable { var ptr: UnsafeBufferPointer var count: Int { return ptr.count } subscript(_ x: Int) -> T { return ptr[x] } deinit {} } extension Array { public mutating func withBufferView(_ f: (borrowing BufferView) -> U) -> U { return withUnsafeBufferPointer { return f(BufferView(ptr: $0)) } } } func testBufferView(_ x: __owned [Int]) { var y = consume x // CHECK: 1 // CHECK: 2 // CHECK: 3 y.withBufferView { for i in 0..<$0.count { print($0[i]) } } } @inline(never) func getBool() -> Bool { return true } func testConditionalBufferView(_ x: __owned [Int]) { (consume x).withUnsafeBufferPointer { let y = BufferView(ptr: $0) // CHECK: 4 // CHECK: 5 // CHECK: 6 if getBool() { for i in 0..