swift,  ios,  xcode

Compiler Error when using Generics and nested functions, Command failed due to signal: Segmentation fault: 11

The following code is causing a compiler crash when compiled with Swift 3 and Xcode 8...

Compiler Error when using Generics and nested functions, Command failed due to signal: Segmentation fault: 11

The problem:

The following code is causing a compiler crash when compiled with Swift 3 and Xcode 8:

import Foundation

public typealias IntCompletion = (Int) -> Void
public typealias FetchIntBlock = (IntCompletion) -> Void

class ATSwiftTest<T: NSURL>: NSObject {

    var fetchIntBlock: FetchIntBlock

    override init() {
        fetchIntBlock = { (aFunc) in }

        super.init()
    }
}

By the process of elimination we were able to figure out that the problem is caused by the nested function declaration.

var fetchIntBlock: FetchIntBlock

The code crashes a Playground compiler as well.

Solution:

If we make the fetchIntBlock var private the code compiles just fine.

It would still be nice for the var to be public.

Subscribe to The infinite monkey theorem

Get the latest posts delivered right to your inbox