[Cuis-dev] Rename class not logging to user changes

Eric Brandwein brandweineric at gmail.com
Sun Dec 1 19:05:47 PST 2019


Hi all,
After a long while without doing anything about this, here's a ChangeSet
that fixes this bug by adding in the user changes file the line `Smalltalk
renameClassNamed: #OldClassName as: #NewClassName!` when a class is
renamed, like it's currently being done when fliing out a ChangeSet. Any
comments, as always, are very welcome.

Cheers,
Eric

El vie., 5 jul. 2019 a las 14:02, Juan Vuletich via Cuis-dev (<
cuis-dev at lists.cuis.st>) escribió:

> Ok for class rename.
>
> BTW, just checked and in the current change set it gets recorded like:
> Smalltalk renameClassNamed: #EllipseMorph as: #TheEllipseMorph
>
> But, if I rename ivar pointBlock in HandleMorph, and then file out
> changes, I do get the detailed sequence.
>
>
> On 7/5/2019 12:35 PM, Hernan Wilkinson wrote:
>
> recording the whole sequence is going to be more difficult because that it
> is not what really happens... so those events should be "artificially"
> created, and I think that for an automatic recovery of the image that is
> the most used case for this, it is better just to add the "rename" event.
> When recovering it will just rename the class and then apply the method
> changes...
>
> On Fri, Jul 5, 2019 at 12:20 PM Juan Vuletich <juan at jvuletich.org> wrote:
>
>> Maybe they should be recorded both ways: as ClassRename and as sequence
>> {ClassCreation. NewMethods. UpdateClassReferences. OldClassRemoval}. There
>> are some reasons for wanting the sequence. One is to be able to re-apply
>> changes, or not require to be in exactly the same state as when the change
>> was created.
>>
>> If both ways are included, then the user of the file can decide what
>> s(he) prefers.
>>
>> On 7/5/2019 10:11 AM, Hernan Wilkinson via Cuis-dev wrote:
>>
>> Hi Eric,
>>  yeap, class rename is not being logged ... a new type of change should
>> be created for that. If fact, it would be great to record all type of
>> refactorings as refactorings instead of only the changes composed by the
>> refactoring.
>>
>>  Regarding the new change record, it should be a class rename type, not a
>> deletion and creation of the new one because that does not happen when
>> doing a class rename.
>>  There is an important question to answer: when loading the change
>> record, should it rename the references too or should only do it for those
>> that are recorded? ... if all the changes are loaded then the later should
>> be applied but if not? I think the best option is to only rename the class
>> and then let the other changes change the reference. (I hope this is
>> understandable :-) )
>>
>> Hernan.
>>
>> On Fri, Jul 5, 2019 at 2:04 AM Eric Brandwein via Cuis-dev <
>> cuis-dev at lists.cuis.st> wrote:
>>
>>> Hi all,
>>>
>>> Today Cuis broke because I was messing with Morphs, and I had to close
>>> the image. Unfortunately, I hadn't saved my changes, so to recover them I
>>> had to rely on the .user.changes file. I opened up the image again, and it
>>> asked me to recover changes. I selected to automatically recover them, and
>>> a strange error occurred: it told me that UndefinedObject didn't understand
>>> #removeSelector:. Digging through the ChangeList, I noticed something: the
>>> class renames were nowhere to be seen. So, what was happening is that there
>>> were some ChangeListElements that removed selectors from classes that
>>> didn't exist because they had the old names from before I renamed them.
>>>
>>> All this story is to point out that bug: the class rename isn't logging
>>> to the changes file. And I'm not really sure how to solve it quickly and
>>> cleanly; there isn't a ClassRenameChangeRecord class like there's a
>>> ClassDeletionChangeRecord, so either there should be a new kind of
>>> ChangeList record to log class renames or we should log the deletion of the
>>> class and the subsequent adding of all the methods that were previously in
>>> that class to the class with the new name. What do you think?
>>>
>>> Cheers,
>>> Eric
>>> --
>>> Cuis-dev mailing list
>>> Cuis-dev at lists.cuis.st
>>> https://lists.cuis.st/mailman/listinfo/cuis-dev
>>>
>>
>>
>> --
>>
>> *Hernán Wilkinson Agile Software Development, Teaching & Coaching*
>> *Phone: +54-011*-4893-2057
>> *Twitter: @HernanWilkinson*
>> *site: http://www.10Pines.com <http://www.10pines.com/>*
>> Address: Alem 896, Floor 6, Buenos Aires, Argentina
>>
>>
>>
>> --
>> Juan Vuletichwww.cuis-smalltalk.orghttps://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Devhttps://github.com/jvuletichhttps://www.linkedin.com/in/juan-vuletich-75611b3
>> @JuanVuletich
>>
>>
>
> --
>
> *Hernán Wilkinson Agile Software Development, Teaching & Coaching*
> *Phone: +54-011*-4893-2057
> *Twitter: @HernanWilkinson*
> *site: http://www.10Pines.com <http://www.10pines.com/>*
> Address: Alem 896, Floor 6, Buenos Aires, Argentina
>
>
>
> --
> Juan Vuletichwww.cuis-smalltalk.orghttps://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Devhttps://github.com/jvuletichhttps://www.linkedin.com/in/juan-vuletich-75611b3
> @JuanVuletich
>
> --
> Cuis-dev mailing list
> Cuis-dev at lists.cuis.st
> https://lists.cuis.st/mailman/listinfo/cuis-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20191202/669a48c3/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 3961-LogClassRenameToUserChanges-EricBrandwein-2019Dec01-14h55m-EB.1.cs.st
Type: application/vnd.sailingtracker.track
Size: 950 bytes
Desc: not available
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20191202/669a48c3/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: UnsavedChangesTo-BaseImageTests-EB.1.cs.st
Type: application/vnd.sailingtracker.track
Size: 969 bytes
Desc: not available
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20191202/669a48c3/attachment-0001.bin>


More information about the Cuis-dev mailing list