// These are purely to add test coverage of different constructs when emitting modules public protocol _NoCopyP: ~Copyable {} public protocol _NoEscapableP: ~Escapable {} extension Int: _NoCopyP {} public struct _Toys { static func test_parallelAssignment() { var y: Int var x: Int (x, y) = (10, 11) } public struct rdar118697289_S1 { let element: Element func f() -> Element { element } } public struct rdar118697289_S2 { let element: Element subscript(i: Int) -> Element { element } } public static func allCopyable1(_ a: T, _ b: T) -> T { return a } public static func allCopyable2(_ s: T) where T: _NoCopyP {} public static func oneCopyable1(_ s: T, _ v: borrowing V) where T: _NoCopyP {} public static func oneCopyable2(_ s: borrowing T, _ v: V) where T: _NoCopyP, T: ~Copyable {} public static func oneCopyable3(_ s: borrowing T, _ v: V) where T: _NoCopyP & ~Copyable {} public static func basic_some(_ s: some _NoCopyP) {} public static func basic_some_nc(_ s: borrowing some _NoCopyP & ~Copyable) {} public static func oneEscapable(_ s: T, _ v: V) where T: _NoEscapableP, T: ~Escapable {} public static func canEscapeButConforms(_ t: T) {} public static func opaqueNonEscapable(_ s: some _NoEscapableP & ~Escapable) {} public static func opaqueEscapable(_ s: some _NoEscapableP) {} } public struct ExplicitHello: ~Copyable { let thing: T } extension ExplicitHello: Copyable where T: Copyable {} public struct Hello: ~Copyable, ~Escapable where T: ~Escapable {} extension Hello: Escapable where T: Escapable, T: ~Copyable {} extension Hello: Copyable where T: Copyable, T: ~Escapable {} public protocol TestAssocTypes { associatedtype A: ~Copyable, _NoCopyP = Int } public typealias SomeAlias = Hello public typealias AliasWithInverse = Hello where G: ~Copyable, G: ~Escapable public struct RudePointer: Copyable {} public class C {} public func noInversesSTART() {} public func checkAny(_ t: Result) where Result: Any {} public func usingClassConstraint(arg: Result) -> Result? where Result: C { return arg } public func withAnyObject(_ t: Result) where Result: AnyObject {} public func noInversesEND() {} public func checkAnyInv1(_ t: borrowing Result) where Result: Any & ~Copyable {} public func checkAnyInv2(_ t: borrowing Result) where Result: ~Copyable & ~Escapable {} public func checkAnyObject(_ t: Result) where Result: AnyObject {} // coverage for rdar://123281976 public struct Outer: ~Copyable { public func innerFn(_ b: borrowing B) {} public struct InnerStruct: ~Copyable { public func g(_ d: borrowing D) where D: ~Copyable {} } public struct InnerVariation1: ~Copyable, ~Escapable {} public struct InnerVariation2: ~Copyable, ~Escapable {} } extension Outer: Copyable where A: Copyable {} extension Outer.InnerStruct: Copyable where C: Copyable, A: Copyable {} extension Outer.InnerVariation1: Copyable where A: Copyable, D: Copyable & Escapable {} extension Outer.InnerVariation2: Escapable where A: ~Copyable, A: Escapable, D: Escapable {} extension Outer.InnerStruct { public func hello(_ t: T) {} } @_preInverseGenerics public func old_swap(_ a: inout T, _ b: inout T) {} @_preInverseGenerics public func borrowsNoncopyable(_ t: borrowing T) {} @_disallowFeatureSuppression(NoncopyableGenerics) public func suppressesNoncopyableGenerics(_ t: borrowing T) {} // coverage for rdar://127389991 @_disallowFeatureSuppression(NoncopyableGenerics) public struct LoudlyNC {} public func _indexHumongousDonuts(_ aggregate: UnsafePointer, _ index: Int) -> T { return UnsafeRawPointer(aggregate).load( fromByteOffset: index * MemoryLayout.stride, as: T.self) } public func referToLoud(_ t: LoudlyNC) {} @_disallowFeatureSuppression(NoncopyableGenerics) public func referToLoudProperGuarding(_ t: LoudlyNC) {} public struct NoCopyPls: ~Copyable {} public func substCopyable(_ t: String?) {} public func substGenericCopyable(_ t: T?) {} public func substNC(_ t: borrowing NoCopyPls?) {} public func substGenericNC(_ t: borrowing T?) {} // coverage for rdar://126090425 protocol P : ~Copyable {} // NOTE: it's important that this is NOT public. protocol Q: ~Copyable {} // NOTE: it's important that this is NOT public. public protocol Publik: ~Copyable {} public struct Concrete : (P & ~Copyable) {} public struct Generic : (P & ~Copyable) {} public struct VeryNested: (P & (Q & ~Copyable & Publik) & (P & ~Copyable)) {} public struct Twice: P & ~Copyable, Q & ~Copyable {} public struct RegularTwice: ~Copyable, ~Copyable {} // coverage for rdar://130179698 public struct Continuation { public func resume(returning value: consuming T) where E == Never {} } // coverage for rdar://132453000 (Can't make a type both conditionally Copyable and conditionally Escapable) @frozen public enum Moptional: ~Copyable, ~Escapable { case none case some(Wrapped) } extension Moptional: Copyable where Wrapped: Copyable, Wrapped: ~Escapable {} extension Moptional: Escapable where Wrapped: Escapable, Wrapped: ~Copyable {}