// RUN: %target-swift-emit-silgen -Xllvm -sil-print-types -target %target-swift-5.9-abi-triple %s | %FileCheck %s public class A { public func f(_ action: (repeat each T) -> ()) {} } // CHECK-LABEL: sil hidden [ossa] @$s4main5test02fnyySi_SftXE_tF : // CHECK: [[CTOR:%.*]] = function_ref @$s4main1ACACyxxQp_QPGycfC : // CHECK: [[OBJECT:%.*]] = apply [[CTOR]] // CHECK: [[METHOD:%.*]] = class_method [[OBJECT]] : $A, #A.f : (A) -> ((repeat each T) -> ()) -> () // CHECK: apply [[METHOD]] func test0(fn: (Int, Float) -> ()) { A().f(fn) } // CHECK-LABEL: sil hidden [ossa] @$s4main5test1yyF : // CHECK: [[CTOR:%.*]] = function_ref @$s4main1ACACyxxQp_QPGycfC : // CHECK: [[OBJECT:%.*]] = apply [[CTOR]] // CHECK: [[METHOD:%.*]] = class_method [[OBJECT]] : $A, #A.f : (A) -> ((repeat each T) -> ()) -> () // CHECK: apply [[METHOD]] func test1() { A().f { a, b in } } // These are all currently forbidden #if false public class B : A { public override func f(_ action: (repeat each T) -> ()) { super.f(action) } } func test2() { B().f { a, b in } } public class C : A { public override func f(_ action: (T, repeat each U) -> ()) { super.f(action) } } func test3() { C().f { a, b in } } public class D : A { public override func f(_ action: (Int, Float) -> ()) { super.f(action) } } func test4() { D().f { a, b in } } #endif