> On 14 Oct 2016, at 22:42, John McCall <rjmcc...@apple.com> wrote:
>> On Oct 11, 2016, at 12:04 AM, Karl via swift-evolution
>> <firstname.lastname@example.org <mailto:email@example.com>> wrote:
>>> On 11 Oct 2016, at 08:49, Benjamin Spratling <bspratl...@mac.com
>>> <mailto:bspratl...@mac.com>> wrote:
>>> The error message is not saying that aFunction throws, it says “??" might
>>> throw. After all, you supplied a ()rethrows->(Int) to it as its second
>>> argument, which is wrapping a ()throws->Int, “bFunction()"
>>> ?? and && and || wrap the trailing expression in an @autoclosure.
>>> I am a little surprised two “try” are not required. This would be my
>>>> let value = try aFunction() ?? try bFunction()
>>> but, using try to the right of a non-assignment operator is not allowed.
>>> This, however, is not disallowed:
>>> let value = try aFunction() ?? (try bFunction())
>>> The purpose of the @autoclosure is to make developers forget they need to
>>> write a closure, and it apparently worked for you.
>>> -Ben Spratling
>> Yeah, I understand the reason for it, but I still think we should change it
>> so you write the ‘try’ before the part which actually throws. Perhaps the
>> rule should be something more general around rethrowing autoclosures?
>> After all, I thought that was the entire point of the ‘try’ keyword. The
>> compiler doesn't really need it (it already knows what throws and what
>> doesn’t), but it helps humans to mark where the throwing stuff happens.
> I agree that you should be able to place the try inside the autoclosure and
> have that propagate out. This doesn't need evolution discussion; please file
> a bug.
swift-evolution mailing list