<div dir="ltr"><div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)"><span style="font-family:Arial,Helvetica,sans-serif;color:rgb(34,34,34)">On Mon, Mar 4, 2019 at 2:16 AM K K Subbu <<a href="mailto:kksubbu.ml@gmail.com">kksubbu.ml@gmail.com</a>> wrote:</span><br></div></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">All,<br>
<br>
<br>
How does one enforce finality of methods in Squeak?<br>
<br>
I noticed that methods like Object>>basicSize have instructions in <br>
comments not to override these, but what if these methods do get <br>
overridden/extended during compilation (perhaps by accident or oversight).<br>
<br>
Can we use a dummy primitive in these methods to mark them as final?<br>
</blockquote><div><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)">There is no way to enforce this from inside the method, since if it is overridden in a subclass, the VM never even looks at that method.</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)">We do warn users about accidentally overriding some methods, in particular anything defined in Behavior / ClassDescription / Metaclass. This works simply by having the browser check if the method you're trying to accept is "scary" (see¬†isScarySelector:).</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)">We could do something similar for methods that you really should not override (like #basicSize, #== etc).</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)">- Bert -</div></div></div></div>