<div dir="ltr">Sorry for the delay... I had some convoluted dependencies on the old methods that took me a while to untangle.  All set now.  Your proposed changes look good to me.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Jan 29, 2020 at 8:55 AM Juan Vuletich <<a href="mailto:juan@jvuletich.org">juan@jvuletich.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 1/18/2020 8:07 PM, Phil B via Cuis-dev wrote:<br>
> Attached is a first cut of something I've wanted for a while: the <br>
> ability to capture method changes as they occur with the ability to <br>
> prevent them from happening if needed at a global level.  Basically <br>
> it's just paired methods of #isOkTo[Compile|Remove]:meta: and <br>
> #note[Compilation|Removal]Of:meta:.<br>
><br>
> It's always bothered me how central the method  structure is yet <br>
> completely useless from the standpoint of having extensible <br>
> metadata... if I'm wrong re: extensibility, please let me know what <br>
> I've overlooked.  So barring that, these changes allow for things like <br>
> helping to keep a separate metadata structure in sync with method <br>
> changes.  The main requirement is to be able to track method adds, <br>
> changes and deletes to the image globally.  Not sure, but I was <br>
> thinking that this facility might also be useful for refactoring tools.<br>
><br>
> One issue / odd thing I noticed: the removal methods only get called <br>
> instance-side due to ClassDescription #removeSelector: only getting <br>
> called on instance methods and you have to jump up to the Behavior <br>
> implementor for class methods.  That seems strange to me since method <br>
> compilation all appears to occur at the level of ClassDescription.  Is <br>
> there a reason removals need to be different from compilation in this <br>
> way?  (Not knowing the answer, I haven't fixed this issue in the <br>
> attached changeset)<br>
<br>
Hi Phil, folks,<br>
<br>
This is my proposal.<br>
<br>
When reviewing all this code, I found some dead code, and stuff crying <br>
for cleanup. Hence the attached #4035 and #4036.<br>
<br>
Then, I almost cloned your implementation of isOk, but with a different <br>
question for adding a new method than for modifying en existing one. I <br>
did #4037 with your initials, as it is your code after all.<br>
<br>
BTW, I don't quite get your last paragraph. Can you elaborate a bit on <br>
the issue, perhaps with steps to reproduce the offending behavior?<br>
<br>
If these changesets look ok for everybody, I'll push them to GitHub.<br>
<br>
Thanks,<br>
<br>
-- <br>
Juan Vuletich<br>
<a href="http://www.cuis-smalltalk.org" rel="noreferrer" target="_blank">www.cuis-smalltalk.org</a><br>
<a href="https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev" rel="noreferrer" target="_blank">https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev</a><br>
<a href="https://github.com/jvuletich" rel="noreferrer" target="_blank">https://github.com/jvuletich</a><br>
<a href="https://www.linkedin.com/in/juan-vuletich-75611b3" rel="noreferrer" target="_blank">https://www.linkedin.com/in/juan-vuletich-75611b3</a><br>
@JuanVuletich<br>
<br>
</blockquote></div>