<div dir="ltr">I did not mean that but I can sort of see how you came to that. My intent was that `final func doIt()` is a statement that `Foo.doIt()` is provided in the same module but is not dynamic. It would be the same as what currently happens when a method is not in a protocol but a default implementation is provided.</div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Dec 9, 2015 at 4:00 PM, Gwendal Roué <span dir="ltr">&lt;<a href="mailto:gwendal.roue@gmail.com" target="_blank">gwendal.roue@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=""><br>
&gt; Le 9 déc. 2015 à 11:22, T.J. Usiyan &lt;<a href="mailto:griotspeak@gmail.com">griotspeak@gmail.com</a>&gt; a écrit :<br>
&gt;<br>
&gt; I actually suggest something along the lines of<br>
&gt;<br>
&gt;     protocol Foo {<br>
&gt;         final func doIt() -&gt; String<br>
&gt;     }<br>
&gt;<br>
&gt;     extension Foo {<br>
&gt;         final func doIt() -&gt; String {<br>
&gt;             print(&quot;I did it.&quot;)<br>
&gt;         }<br>
&gt;         final func doThat() {<br>
&gt;             print(&quot;I did that.&quot;)<br>
&gt;         }<br>
&gt;     }<br>
&gt;<br>
&gt; to indicate that foo will be provided in this module and is not ever to be dynamically dispatched. This draws attention to the fact that dispatch is static in a clear consistent manner.<br>
&gt;<br>
&gt; TJ<br>
<br>
</span>In this particular example, do you mean that a class that implements Foo would have to declare its own doIt() as final, and can not implement its own doThat() ?<br>
<br>
    class C : Foo {<br>
        final func doIt() -&gt; String { … }    // final required<br>
        final func doThat() { … }    // illegal<br>
    }<br>
<span class="HOEnZb"><font color="#888888"><br>
Gwendal<br>
<br>
</font></span></blockquote></div><br></div>