mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
36 lines
1.3 KiB
Plaintext
36 lines
1.3 KiB
Plaintext
|
|
// RUN: %target-swift-frontend -emit-ir %s
|
|
sil_stage canonical
|
|
|
|
import Swift
|
|
|
|
public protocol Protocol {
|
|
static func foo(_: Self?)
|
|
}
|
|
|
|
// https://github.com/apple/swift/issues/45611
|
|
// Ensure we pass the 'Self' type metadata for 'Optional' methods using the
|
|
// formal 'Optional' type and not a lowered SIL type.
|
|
|
|
// CHECK-LABEL: @_TMaGSqFT_T__
|
|
|
|
sil @optional_method : $@convention(method) <T> (@in_guaranteed Optional<T>) -> ()
|
|
|
|
sil @call_optional_method_with_lowered_function : $@convention(thin) (@in_guaranteed Optional<@callee_guaranteed @substituted <T> () -> @out T for <()>>) -> () {
|
|
entry(%x : $*Optional<@callee_guaranteed @substituted <T> () -> @out T for <()>>):
|
|
%f = function_ref @optional_method : $@convention(method) <T> (@in_guaranteed Optional<T>) -> ()
|
|
apply %f<() -> ()>(%x) : $@convention(method) <T> (@in_guaranteed Optional<T>) -> ()
|
|
%p = partial_apply [callee_guaranteed] %f<() -> ()>() : $@convention(method) <T> (@in_guaranteed Optional<T>) -> ()
|
|
return undef : $()
|
|
}
|
|
|
|
// https://github.com/apple/swift/issues/46136
|
|
// Ensure we correctly emit metadata for layout for lowered 'Optional' types.
|
|
|
|
sil @alloc_stack_optional_with_generic : $@convention(thin) <T> () -> () {
|
|
%a = alloc_stack $*Optional<(T, @convention(thin) () -> ())>
|
|
dealloc_stack %a : $*Optional<(T, @convention(thin) () -> ())>
|
|
%t = tuple ()
|
|
return %t : $()
|
|
}
|