// RUN: %empty-directory(%t) // RUN: %target-swift-frontend -emit-ir -o - %s -module-name test \ // RUN: -enable-experimental-feature SuppressedAssociatedTypes \ // RUN: -parse-as-library \ // RUN: -enable-library-evolution \ // RUN: -g \ // RUN: > %t/test.irgen // RUN: %FileCheck %s < %t/test.irgen // REQUIRES: swift_feature_SuppressedAssociatedTypes public protocol P: ~Copyable { } public struct CallMe { public enum Maybe: ~Copyable { // CHECK-LABEL: @"$s4test6CallMeV5MaybeOAARi_zrlE4someyAEyx_qd__Gqd__cAGmr__lFWC" // CHECK: @"$s4test6CallMeV5MaybeOAARi_zrlE4noneyAEyx_qd__GAGmr__lFWC" case none case some(T) } } extension CallMe { public enum Box: ~Copyable { // CHECK-LABEL: @"$s4test6CallMeV3BoxO4someyAEyx_qd__Gqd__cAGmr__lFWC" // CHECK: @"$s4test6CallMeV3BoxO4noneyAEyx_qd__GAGmr__lFWC" case none case some(T) } } // CHECK: @"$s4test13ManagedBufferC12_doNotCallMeACyxq_Gyt_tcfCTq" public protocol Hello: ~Copyable { // CHECK: @"$s4test5HelloP6PersonAC_AA1PTn" // CHECK: @"$s6Person4test5HelloPTl" = associatedtype Person: P & ~Copyable // CHECK: @"$s4test5HelloP14favoritePerson0D0QzvrTq" = var favoritePerson: Person { get } // CHECK: @"$s4test5HelloP5greetyy6PersonQzFTq" func greet(_ person: borrowing Person) // CHECK: @"$s4test5HelloP10overloadedyyqd__lFTj" func overloaded(_: borrowing T) // CHECK: @"$s4test5HelloP10overloadedyyqd__Ri_d__lFTj" func overloaded(_: borrowing T) } // CHECK: $s4test2XQVAARi_zrlE1AVMi protocol Q: ~Copyable { associatedtype A: ~Copyable } struct XQ: ~Copyable { } extension XQ: Q where T: ~Copyable { struct A { } } protocol HasResult { associatedtype Success } extension Result: HasResult { func testMe() -> Success? { var x: Result.Success? = nil if case let .success(s) = self { x = s } return x } } // Class metadata @_fixed_layout open class ManagedBuffer { @_preInverseGenerics public final var header: Header // CHECK: @"$s4test13ManagedBufferC12_doNotCallMeACyxq_Gyt_tcfCTj" @_preInverseGenerics @usableFromInline internal init(_doNotCallMe: ()) { fatalError("boom") } } extension UnsafePointer { struct AtomicRepresentation { } } // CHECK: $sSP4testE20AtomicRepresentationVySi_GD func useAtomicRepresentation() { let x = UnsafePointer.AtomicRepresentation() print(x) } struct Box: ~Copyable { } struct List: ~Copyable { // CHECK: $s4test4ListVAARi_zrlE4NodeVwst struct Node: ~Copyable { var element: Element var next: Link } typealias Link = Box? var head: Link }