| // RUN: %target-swift-frontend -emit-silgen %s | FileCheck %s |
| |
| func foo<T: ExpressibleByIntegerLiteral>(x x: T = 0) { } |
| |
| struct Zim<T: ExpressibleByIntegerLiteral> { |
| init(x: T = 0) { } |
| init<U: ExpressibleByFloatLiteral>(_ x: T = 0, y: U = 0.5) { } |
| |
| static func zim(x: T = 0) { } |
| static func zang<U: ExpressibleByFloatLiteral>(_ x: T = 0, y: U = 0.5) { } |
| } |
| |
| // CHECK-LABEL: sil hidden @_TF25default_arguments_generic3barFT_T_ : $@convention(thin) () -> () { |
| func bar() { |
| // CHECK: [[FOO_DFLT:%.*]] = function_ref @_TIF25default_arguments_generic3foo |
| // CHECK: apply [[FOO_DFLT]]<Int, Int> |
| foo() |
| // CHECK: [[ZIM_DFLT:%.*]] = function_ref @_TIZFV25default_arguments_generic3Zim3zim |
| // CHECK: apply [[ZIM_DFLT]]<Int, Int> |
| Zim.zim() |
| // CHECK: [[ZANG_DFLT_0:%.*]] = function_ref @_TIZFV25default_arguments_generic3Zim4zang |
| // CHECK: apply [[ZANG_DFLT_0]]<Int, Int, Double, Double> |
| // CHECK: [[ZANG_DFLT_1:%.*]] = function_ref @_TIZFV25default_arguments_generic3Zim4zang |
| // CHECK: apply [[ZANG_DFLT_1]]<Int, Int, Double, Double> |
| Zim.zang() |
| // CHECK: [[ZANG_DFLT_1:%.*]] = function_ref @_TIZFV25default_arguments_generic3Zim4zang |
| // CHECK: apply [[ZANG_DFLT_1]]<Int, Int, Double, Double> |
| Zim.zang(22) |
| } |