Files
swift-mirror/test/RemoteAST/parameterized_existentials.swift
Allan Shortlidge 92372d8c8a test: Remove -disable-availability-checking where it has no effect.
None of these tests use an availability gated language feature or standard
library API at the deployment target they compile with, so the flag suppresses
no diagnostics. Remove it rather than replacing it with a deployment target.

Verified by running each test with the flag removed. The one exception is
attr_target_x86_64.swift, which only runs on x86_64 hosts; its arm64 twin,
attr_target_arm64.swift, is verified and the two differ only in the CPU
features they name.
2026-09-10 15:46:52 -07:00

82 lines
1.8 KiB
Swift

// RUN: %target-swift-remoteast-test %s | %FileCheck %s
// REQUIRES: swift-remoteast-test
@_silgen_name("printDynamicTypeAndAddressForExistential")
func printDynamicTypeAndAddressForExistential<T>(_: T)
@_silgen_name("stopRemoteAST")
func stopRemoteAST()
protocol Paddock<Animal> {
associatedtype Animal
}
struct Chicken {}
struct Coop: Paddock {
typealias Animal = Chicken
}
struct Pig {}
struct Pen: Paddock {
typealias Animal = Pig
}
struct Field<Animal>: Paddock {}
protocol SharedYard<Animal1, Animal2, Animal3, Animal4> {
associatedtype Animal1
associatedtype Animal2
associatedtype Animal3
associatedtype Animal4
}
class Lea: SharedYard {
typealias Animal1 = Chicken
typealias Animal2 = Pig
typealias Animal3 = Chicken
typealias Animal4 = Pig
init() {}
}
let coop = Coop()
// CHECK: Coop
printDynamicTypeAndAddressForExistential(coop as any Paddock)
// CHECK-NEXT: Coop
printDynamicTypeAndAddressForExistential(coop as any Paddock<Chicken>)
// CHECK-NEXT: Coop.Type
printDynamicTypeAndAddressForExistential(Coop.self as (any Paddock<Chicken>.Type))
// CHECK-NEXT: Coop.Type.Type.Type.Type
printDynamicTypeAndAddressForExistential(Coop.Type.Type.Type.self as (any Paddock<Chicken>.Type.Type.Type.Type))
let pen = Pen()
// CHECK-NEXT: Pen
printDynamicTypeAndAddressForExistential(pen as any Paddock)
// CHECK-NEXT: Pen
printDynamicTypeAndAddressForExistential(pen as any Paddock<Pig>)
let lea = Lea()
// CHECK-NEXT: Lea
printDynamicTypeAndAddressForExistential(lea as any SharedYard)
// CHECK-NEXT: Lea
printDynamicTypeAndAddressForExistential(lea as any SharedYard<Chicken, Pig, Chicken, Pig>)
func freeRange<Animal>(_ x: Animal.Type) {
printDynamicTypeAndAddressForExistential(Field<Animal>() as any Paddock<Animal>)
}
// CHECK-NEXT: Field<Chicken>
freeRange(Chicken.self)
// CHECK-NEXT: Field<Pig>
freeRange(Pig.self)
stopRemoteAST()