[swift-dev] Fixit for trailing closures

Xi Ge xi_ge at apple.com
Tue Jul 5 18:34:20 CDT 2016

Hi Swift-devs,
I have tried to add a fixit to help developers using trailing closures more, motivated by my observation during WWDC that some developers 
do not even realize that we have such a feature. In my opinion, trailing closures are more concise, and once you get used to it, more readable; 
therefore users should adopt trailing closures whenever doing so introduces no ambiguity.

Fixits can enhance the discoverability of trailing closures by identifying misuses and by transforming users’ code automatically. However, adding the fixit introduces new issues:

Issue 1: The fixit has to be associated with a warning. Adding the warning means we declare wars against convertible non-trailing closures, which is a valid syntax choice by users.

Issue 2: Ambiguity checking should be exhaustive. We have several known situations when non-trailing closures cannot be convert to trailing closures, including:
Trailing closures are followed by other brackets, e.g., “if foo({}) {}” cannot be converted to “if foo {} {}”.
Removing the label of the last closure causes ambiguous function references, e.g. “foo(v: {})” cannot be converted to “foo {}” when “foo(v1: {})” also exists.

So Swift-devs, is the warning worth adding? If yes, are there other situations of ambiguity that are not covered?

Thanks for your feedback!

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-dev/attachments/20160705/61761951/attachment.html>

More information about the swift-dev mailing list