> On Jul 5, 2016, at 4:34 PM, Xi Ge via swift-dev <swift-dev@swift.org> wrote:
> 
> 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!
> Xi
> 

-1, this feels like a really good tool to have in a code-linter, but not 
something that we should put in the compiler and prescribe to all our users.

My biggest concern is that it’s not always obvious what the closure is used 
for.  The argument label can help with this:

[1].lexicographicallyPrecedes([0]) { <#code#> }
[1].lexicographicallyPrecedes([0], isOrderedBefore: { <#code#> })


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

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

Reply via email to