> On Apr 26, 2016, at 12:15 AM, Aleksandar Petrovic via swift-evolution 
> <[email protected]> wrote:
> 
> Hi Swift community, I have a question.
> 
> This is a valid Swift code:
> 
> func testFunc(times: Int, fn: ((Int)->Void)? = nil) {
>       guard let f = fn else { return }
>       for i in 1 ..< times {
>               f(i)
>       }
> }
> 
> And this is not:
> 
> func testFunc(times: Int, @noescape fn: ((Int)->Void)? = nil) {
>       guard let f = fn else { return }
>       for i in 1 ..< times {
>               f(i)
>       }
> }
> 
> I can't think of any hard reason why the @noescape parameter of the function 
> can't be nullable (and, with default value, be optional), but maybe I'm 
> missing something. Is there any plan to correct this in 3.0?

There are two ways to fix this: a horrible hack that special cases optionals, 
or the more principled solution that treats optional as the underlying enum 
type that it is, and making @noescape propagate through to the members of the 
.some case.

You can probably guess this, but I’d prefer to discuss fixing the full 
generality of the problem, not providing a special case in the compiler for 
this.

-Chris

_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to