I can see the use case, but it&#39;d be annoying (or, impossible) to work around if I intend to call `end` by passing it to a helper function in another (let&#39;s say, precompiled) module. There&#39;s no way for the compiler to inspect that `end` is always called by that other module, and if calling `end` twice causes bad things to happen, I&#39;m totally out of luck. You&#39;d need a companion annotation to pass along the requirement to the callee, or some sort of force-unrequire, but the latter can&#39;t have teeth (i.e. can&#39;t enforce at runtime) if the closure is escaping.<br><div class="gmail_quote"><div dir="ltr">On Tue, Aug 16, 2016 at 08:39 James Campbell via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:#000000">It would be handy if a callback could be marked as required with an optional descriptive message i.e</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:#000000"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:#000000">class BackgroundTask {</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:#000000"> func run(end: @required(&quot;You must call end otherwise iOS will penalise your app for being a bad citizen&quot;) () -&gt; Void) </div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:#000000">}</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:#000000"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:#000000">That was the developer can comunicate the bad things that can happen if this callback isn&#39;t called such as iOS peanlizing them for not ending a background task or perhaps memory leaks caused by clean up code unable to be triggered.</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:#000000"><br></div><div><div data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr">







<p><b><font color="#cc0000">___________________________________</font></b></p><p><b>James</b></p><p><b><font color="#cc0000"><a href="mailto:james@supmenow.com" target="_blank">james@supmenow.com</a>⎥<a href="http://supmenow.com" target="_blank">supmenow.com</a></font></b></p><p><b><font size="2">Sup</font></b></p><p><b><font size="2">Runway East
</font></b></p><p><b><font size="2">10 Finsbury Square</font></b></p><p><b><font size="2">London</font></b></p><p><b><font size="2">
EC2A 1AF </font></b></p></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div>
</div>
_______________________________________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
</blockquote></div>