| // RUN: %target-run-simple-swift | %FileCheck %s |
| // REQUIRES: executable_test |
| |
| import Swift |
| |
| // Regression test for <rdar://problem/16119895>. |
| |
| struct Generic<T> { |
| typealias Storage = _HeapBufferStorage<Int,T> |
| |
| init() { |
| buffer = _HeapBuffer(Storage.self, 0, 0) |
| } |
| |
| mutating func isUniquelyReferenced() -> Bool { |
| return buffer.isUniquelyReferenced() |
| } |
| |
| var buffer: _HeapBuffer<Int, T> |
| } |
| func g0() { |
| var x = Generic<Int>() |
| // CHECK: true |
| print(x.isUniquelyReferenced()) |
| // CHECK-NEXT: true |
| print(x.buffer.isUniquelyReferenced()) |
| } |
| g0() |
| |
| |
| struct NonGeneric { |
| typealias T = Int |
| typealias Storage = _HeapBufferStorage<Int,T> |
| |
| init() { |
| buffer = _HeapBuffer(Storage.self, 0, 0) |
| } |
| |
| mutating func isUniquelyReferenced() -> Bool { |
| return buffer.isUniquelyReferenced() |
| } |
| |
| var buffer: _HeapBuffer<Int, T> |
| } |
| func g1() { |
| var x = NonGeneric() |
| // CHECK-NEXT: true |
| print(x.isUniquelyReferenced()) |
| // CHECK-NEXT: true |
| print(x.buffer.isUniquelyReferenced()) |
| } |
| g1() |