// RUN: %target-swift-emit-sil \ // RUN: %s \ // RUN: -sil-verify-all \ // RUN: -verify struct Ur : ~Copyable { deinit {} } struct Regular : ~Copyable { var u0: Ur var u1: Ur deinit { borrowNoncopyable(self) takeUr(u0) takeUr(u1) } } struct RegularGeneric : ~Copyable { deinit{ bye() borrowNoncopyable(self) take(t) borrowUr(ur) takeUr(ur) } var ur: Ur var t: T } struct NoncopyableGeneric : ~Copyable { deinit{ bye() borrowNoncopyable(self) borrowNoncopyable(t) takeNoncopyable(t) borrowUr(ur) takeUr(ur) } var ur: Ur var t: T } func bye() {} func borrowNoncopyable(_ t: borrowing T) {} func takeNoncopyable(_ t: consuming T) {} func borrow(_ t: borrowing T) {} func take(_ t: consuming T) {} func borrowUr(_ s: borrowing Ur) {} func takeUr(_ t: consuming Ur) {} func swapUr(_ u0: inout Ur, _ u1: inout Ur) { let tmp = u0 u0 = u1 u1 = tmp }