Files
swift-mirror/test/IRGen/mangling_inverse_generics_evolution.swift
Meghana Gupta e8abd59da5 Update tests
2024-11-18 18:09:19 -08:00

117 lines
2.7 KiB
Swift

// 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<U: ~Copyable> {
public enum Maybe<T: ~Copyable>: ~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<T: ~Copyable>: ~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<Person>: ~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<T>(_: borrowing T)
// CHECK: @"$s4test5HelloP10overloadedyyqd__Ri_d__lFTj"
func overloaded<T: ~Copyable>(_: borrowing T)
}
// CHECK: $s4test2XQVAARi_zrlE1AVMi
protocol Q: ~Copyable {
associatedtype A: ~Copyable
}
struct XQ<T: ~Copyable>: ~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<Header, Element: ~Copyable> {
@_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<Int>.AtomicRepresentation()
print(x)
}
struct Box<Wrapped: ~Copyable>: ~Copyable { }
struct List<Element: ~Copyable>: ~Copyable {
// CHECK: $s4test4ListVAARi_zrlE4NodeVwst
struct Node: ~Copyable {
var element: Element
var next: Link
}
typealias Link = Box<Node>?
var head: Link
}