Nicolas Cellier uploaded a new version of Monticello to project The Trunk:
http://source.squeak.org/trunk/Monticello-nice.667.mcz ==================== Summary ==================== Name: Monticello-nice.667 Author: nice Time: 8 April 2017, 4:53:33.332413 pm UUID: 2ce0d205-81ea-4f9d-ada9-2208e93d3b2e Ancestors: Monticello-eem.666 Perform a forgetSuperfluousMethodRemovals, which is assuming that it's un-necessary to remove methods individually if we remove the whole class. This change is necessary to restore the updateStream after MethodContext -> Context rename. Indeed, the MCDiffyVersion for Kernel-eem.1078 is going to detect that there is no more MethodContext in the package and ask to remove each and every MethodContext method. =============== Diff against Monticello-eem.666 =============== Item was changed: ----- Method: MCPackageLoader>>analyze (in category 'private') ----- analyze | sorter | sorter := self sorterForItems: additions. additions := sorter orderedItems. requirements := sorter externalRequirements. unloadableDefinitions := sorter itemsWithMissingRequirements sorted. + self forgetSuperfluousMethodRemovals. sorter := self sorterForItems: removals. removals := sorter orderedItems reversed.! Item was added: + ----- Method: MCPackageLoader>>forgetSuperfluousMethodRemovals (in category 'private') ----- + forgetSuperfluousMethodRemovals + | removedClasses | + removedClasses := (removals select: #isClassDefinition) collect: #actualClass. + removedClasses addAll: (removedClasses collect: #class). + removals := removals reject: [:e | e isMethodDefinition and: [removedClasses includes: e actualClass]]! |
Currently, I made update-eem.406.mcm point to it. But I'm absolutely not sure that this stage is necessary, since I moved #MethodContext binding to Undeclared. If MC experts think that it might have bad side effects, we can revert.2017-04-08 17:01 GMT+02:00 <[hidden email]>: Nicolas Cellier uploaded a new version of Monticello to project The Trunk: |
Nicolas, thank you /so/ much for figuring this out, and thank you even more for fixing this. _,,,^..^,,,_ (phone)
|
Nice!
And thank you. (Screen shot shows sucessful update test from 17085 to 17157) --Hannes On 4/8/17, Eliot Miranda <[hidden email]> wrote: > Nicolas, > > thank you /so/ much for figuring this out, and thank you even more for > fixing this. > > _,,,^..^,,,_ (phone) > >> On Apr 8, 2017, at 9:00 AM, Nicolas Cellier >> <[hidden email]> wrote: >> >> Currently, I made update-eem.406.mcm point to it. >> But I'm absolutely not sure that this stage is necessary, since I moved >> #MethodContext binding to Undeclared. >> If MC experts think that it might have bad side effects, we can revert. >> >> 2017-04-08 17:01 GMT+02:00 <[hidden email]>: >>> Nicolas Cellier uploaded a new version of Monticello to project The >>> Trunk: >>> http://source.squeak.org/trunk/Monticello-nice.667.mcz >>> >>> ==================== Summary ==================== >>> >>> Name: Monticello-nice.667 >>> Author: nice >>> Time: 8 April 2017, 4:53:33.332413 pm >>> UUID: 2ce0d205-81ea-4f9d-ada9-2208e93d3b2e >>> Ancestors: Monticello-eem.666 >>> >>> Perform a forgetSuperfluousMethodRemovals, which is assuming that it's >>> un-necessary to remove methods individually if we remove the whole >>> class. >>> >>> This change is necessary to restore the updateStream after MethodContext >>> -> Context rename. >>> >>> Indeed, the MCDiffyVersion for Kernel-eem.1078 is going to detect that >>> there is no more MethodContext in the package and ask to remove each and >>> every MethodContext method. >>> >>> =============== Diff against Monticello-eem.666 =============== >>> >>> Item was changed: >>> ----- Method: MCPackageLoader>>analyze (in category 'private') ----- >>> analyze >>> | sorter | >>> sorter := self sorterForItems: additions. >>> additions := sorter orderedItems. >>> requirements := sorter externalRequirements. >>> unloadableDefinitions := sorter itemsWithMissingRequirements >>> sorted. >>> >>> + self forgetSuperfluousMethodRemovals. >>> sorter := self sorterForItems: removals. >>> removals := sorter orderedItems reversed.! >>> >>> Item was added: >>> + ----- Method: MCPackageLoader>>forgetSuperfluousMethodRemovals (in >>> category 'private') ----- >>> + forgetSuperfluousMethodRemovals >>> + | removedClasses | >>> + removedClasses := (removals select: #isClassDefinition) collect: >>> #actualClass. >>> + removedClasses addAll: (removedClasses collect: #class). >>> + removals := removals reject: [:e | e isMethodDefinition and: >>> [removedClasses includes: e actualClass]]! >>> >>> >> >> > Squeak_6.0a-17085_update_test_2017-04-08_OK.png (61K) Download Attachment |
In reply to this post by Nicolas Cellier
On Sat, Apr 8, 2017 at 6:00 PM, Nicolas Cellier <[hidden email]> wrote:
No, this is awesome. I would even advocate for putting it in the patch building so when I look at changes for a package, it wouldn't list all the method removals if the whole class is being removed. Btw I remember we had a problem where a class's #unload method was removed before the class was removed from the system so the unload code wouldn't get executed. Not sure how we fixed that before. Or did we? - Bert -
|
Free forum by Nabble | Edit this page |