Search code examples
swiftxcode6-beta6dollar.swift

'Cannot create a variadic tuple' error


Here's a function from the Dollar framework for Swift:

public class func bind<T, E>(function: (T...) -> E, _ parameters: T...) -> (() -> E) {
    return { () -> E in
        typealias TType = (T...)
        return function(unsafeBitCast(parameters, TType.self))
    }
}

In the line with the typealias I get the Cannot create a variadic tuple error. When I remove the braces around T... then I receive the Consecutive statements on a line must be separated by ';' error. So, this is not a solution.

Does anyone know a workaround to get the error away?

This happens since XCode 6 Beta 6, which was (really) released today.


Solution

  • This is fixed in the Dollar project now. But for someone who encounters this issue in another project the way to solve it is by doing a unsafeBitCast on the function itself as such which will resolve the compile issue.

    typealias Function = [T] -> E
    let f = unsafeBitCast(function, Function.self)
    f(params)