IMO +1 for Антон's suggestion, but

"It will also eliminate situation when you can pass () argument to a () → T
function."

What do you think about the result "type":

typealias f1 = () -> Void
typealias f2 = () -> ((Void))
typealias f3 = () -> (())
typealias f4 = () -> ((((((()))))))

They are all equal definition now. In your opinion, should we change this also in some way?

On 22.04.2016 11:12, Антон Жилин via swift-evolution wrote:
+1, but this proposal need further work.
Specification of the new function grammar is needed.

Currently, it looks like:

function-type → type
<https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Types.html#//apple_ref/swift/grammar/type>­|throws­|_opt
­|->­|type
<https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Types.html#//apple_ref/swift/grammar/type>

It is already false, because some attributes can only be used in function
types.

I suggest to rewrite it to something like:

/function-type/ → |(| /function-parameter-types/_opt  |)| |->| /type/

/function-type/ → |(| /function-parameter-types/_opt  |)| |throws| |->| /type/

/function-type/ → |(| /function-parameter-types/_opt
 |)| |rethrows| |->| /type/

/function-parameter-types/ → /function-parameter-type/

/function-parameter-types/ → /function-parameter-type/ |,| 
/function-parameter-types/

/function-parameter-type/ → /function-parameter-attributes/ /type/

It will also eliminate situation when you can pass () argument to a () → T
function.
Function types Void->T will need to be migrated.

- Anton


_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to