blob: 647c6d9fcc69a5ad89a855d243d0782fe195fe16 [file] [log] [blame]
// RUN: %target-swift-emit-silgen -primary-file %s | %FileCheck %s
@propertyWrapper
public struct Horse<Value> {
private var stored: Value
public var wrappedValue: Value {
get { stored }
set { stored = newValue }
}
public init(wrappedValue initialValue: Value) {
stored = initialValue
}
public var projectedValue: Self {
mutating get { self }
set { self = newValue }
}
}
public protocol Fuzzball {}
public struct Cat : Fuzzball {}
public struct Dog<Pet : Fuzzball> {
@Horse public var foo: Int = 17
}
extension Dog where Pet == Cat {
public init() {}
}
// CHECK-LABEL: sil [ossa] @$s39property_wrappers_constrained_extension3DogVA2A3CatVRszrlEACyAEGycfC : $@convention(method) (@thin Dog<Cat>.Type) -> Dog<Cat> {
// CHECK: [[FN:%.*]] = function_ref @$s39property_wrappers_constrained_extension3DogV4_foo33_{{.*}}LLAA5HorseVySiGvpfi : $@convention(thin) <τ_0_0 where τ_0_0 : Fuzzball> () -> Int
// CHECK: apply [[FN]]<Cat>() : $@convention(thin) <τ_0_0 where τ_0_0 : Fuzzball> () -> Int