Я пытаюсь перенести свой код с xcode 8.2 swift 3.0.2 на xcode 9 swift 4, и у меня есть проблема с этим кодом:
func test<T0, TRet>(_ fn: (T0) -> TRet) -> Void {
print("foo1")
print(T0.self)
}
func test<T0, T1, TRet>(_ fn: (T0, T1) -> TRet) -> Void {
print("foo2")
print(T0.self)
print(T1.self)
}
let fn2 : (Int, Int) -> Int = { (x:Int, y:Int)->Int in
return x+y
}
test(fn2)
xcode 8.0.2, результаты swift 3.0.2:
foo2
Int
Int
xcode 9, быстрый результат 4:
Playground execution failed:
error: MyPlayground.playground:12:1: error: ambiguous use of 'test'
test(fn2)
^
MyPlayground.playground:1:6: note: found this candidate
func test<T0, T1, TRet>(_ fn: (T0, T1) -> TRet) -> Void {
^
Я что-то упустил? Есть ли новая функция в swift 4, которая вызывает эту ошибку?
Update
Я подал ошибку на bugs.swift.org, как это было предложено в комментариях.
https://bugs.swift.org/browse/SR-6108