| // RUN: %target-build-swift -O %s |
| |
| // SR-12548: SIL verification error regarding |
| // `CapturePropagation::rewritePartialApply` for `partial_apply` with |
| // `@convention(method)` callee. |
| |
| import _Differentiation |
| |
| protocol Protocol: Differentiable { |
| @differentiable |
| func method() -> Self |
| } |
| |
| extension Protocol { |
| @differentiable |
| func method() -> Self { self } |
| } |
| |
| struct Struct: Protocol {} |
| |
| let _: @differentiable (Struct) -> Struct = { $0.method() } |
| |
| // SIL verification failed: operand of thin_to_thick_function must be thin: opFTy->getRepresentation() == SILFunctionType::Representation::Thin |
| // Verifying instruction: |
| // // function_ref specialized Protocol.method() |
| // %5 = function_ref @$s7crasher8ProtocolPAAE6methodxyFAA6StructV_TG5 : $@convention(method) (@in_guaranteed Struct) -> @out Struct // user: %6 |
| // -> %6 = thin_to_thick_function %5 : $@convention(method) (@in_guaranteed Struct) -> @out Struct to $@callee_guaranteed (@in_guaranteed Struct) -> @out Struct // user: %11 |