<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Hi Jon,<div class=""><br class=""></div><div class="">In beta 6, non-escaping is now the default, and you must use the @escaping attribute to declare a parameter as escaping.</div><div class=""><br class=""></div><div class="">Unfortunately, there were a few bugs in how this attribute was implemented.</div><div class=""><br class=""></div><div class="">I checked in a fix to the swift-3.0-branch today: <a href="https://github.com/apple/swift/commit/c1214fea45f0cfa58a5eb4ffc44ee0533f5c8cbe" class="">https://github.com/apple/swift/commit/c1214fea45f0cfa58a5eb4ffc44ee0533f5c8cbe</a></div><div class=""><br class=""></div><div class="">After the above patch, it will no longer make a difference if the function type is written directly (as in doManualClosure) or a typealias (a in doClosure). In both cases, the closure should be non-escaping, unless explicitly declared @escaping. However in beta 6 you see the bug where the closure in doClosure() is escaping, even though no explicit @escaping attribute was specified, because it was written with a typealias.</div><div class=""><br class=""></div><div class="">If you have time, please test the next snapshot when it is released, or build Swift from swift-3.0-branch (or master) today, to see if it behaves as you expect.</div><div class=""><br class=""></div><div class="">Sorry for the confusion.</div><div class=""><br class=""></div><div class="">Slava</div><div class=""><br class=""></div><div class=""><div><blockquote type="cite" class=""><div class="">On Aug 19, 2016, at 5:27 PM, Jon Shier via swift-users &lt;<a href="mailto:swift-users@swift.org" class="">swift-users@swift.org</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">Another general question I have is how the self requirement in general has changed. I’m noticing several instances where my previous @noescape closures, which of course had that attribute removed, are now requiring self when they didn’t before and aren’t marked @escaping either. So I guess my question is, should there ever be an instance where a closure not marked @escaping requires the use of self?<br class=""><br class=""><br class="">Jon<br class=""><br class=""><blockquote type="cite" class="">On Aug 19, 2016, at 5:46 PM, Jon Shier &lt;<a href="mailto:jon@jonshier.com" class="">jon@jonshier.com</a>&gt; wrote:<br class=""><br class="">Users:<br class=""><span class="Apple-tab-span" style="white-space:pre">        </span>I’m updating more code to beta 6 and have noticed a strange difference when calling functions with closure parameters where that closure is declared with a typealias. Take this class:<br class=""><br class="">typealias Closure = () -&gt; Void<br class=""><br class="">class Thing {<br class=""> &nbsp;&nbsp;var array: [String] = []<br class=""><br class=""> &nbsp;&nbsp;func doClosure(closure: Closure) {<br class=""> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array.append("closure")<br class=""> &nbsp;&nbsp;}<br class=""><br class=""> &nbsp;&nbsp;func doManualClosure(manualClosure: () -&gt; Void) {<br class=""> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array.append("manualClosure")<br class=""> &nbsp;&nbsp;}<br class=""><br class=""> &nbsp;&nbsp;func append() {<br class=""> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;doClosure {<br class=""> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;doClosure {<br class=""><br class=""> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br class=""> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br class=""> &nbsp;&nbsp;}<br class=""><br class=""> &nbsp;&nbsp;func appendManual() {<br class=""> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;doManualClosure {<br class=""> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;doManualClosure {<br class=""><br class=""> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br class=""> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br class=""> &nbsp;&nbsp;}<br class="">}<br class=""><br class="">There’s an error triggered by the doClosure call inside a doClosure call saying that I need an explicit self capture. However, the same pattern in appendManual() builds just fine. I’m guessing this is a bug?<br class=""><br class=""><br class=""><br class="">Jon<br class=""></blockquote><br class="">_______________________________________________<br class="">swift-users mailing list<br class=""><a href="mailto:swift-users@swift.org" class="">swift-users@swift.org</a><br class="">https://lists.swift.org/mailman/listinfo/swift-users<br class=""></div></div></blockquote></div><br class=""></div></body></html>