[Pharo-project] RPackage does not update extension methods to removed classes

Guillermo Polito guillermopolito at gmail.com
Sun Aug 5 13:36:57 CEST 2012


Ok, I found the bug, I'm killing it.

On Sun, Aug 5, 2012 at 1:07 PM, Guillermo Polito
<guillermopolito at gmail.com>wrote:

>
>
> On Sat, Aug 4, 2012 at 2:41 PM, Mariano Martinez Peck <
> marianopeck at gmail.com> wrote:
>
>>
>>
>> On Sat, Aug 4, 2012 at 2:34 PM, Mariano Martinez Peck <
>> marianopeck at gmail.com> wrote:
>>
>>> Hi Stef. I notice that RPackage does not update the extension methods of
>>> removed classes. It is easy to reproduce in Pharo 2.0 by doing:
>>>
>>>  (RPackageOrganizer  default packageNamed: 'FreeType')
>>> allDefinedExtensionMethods   (this fails because FreeType used to have a
>>> extension method in TTCFont which was removed)
>>>
>>> Or step by step:
>>>
>>> 1) Create package PackageX.
>>> 2) Create package PackageY and ClassY.
>>> 3) Create in ClassY a extension method with category *PackageX. If you
>>> now browse the instVar "classExtensionSelectors" of PackageX you will see
>>> ClassY.
>>> 4) Remove ClassY
>>> 5) notice that 'classExtensionSelectors' from PackageX still references
>>> ClassY. In fact, if you ask its extension methods you will have a
>>> KeyNotFound #ClassY in Smalltalk globals ;)
>>>
>>> So...I guess this is a bug.  If true, I open an issue.
>>>
>>>
>> and to fix the already existing ones we can do:
>>
>> | extensions |
>> RPackage allInstances do: [:aPackage |
>> extensions := (aPackage  instVarNamed: 'classExtensionSelectors').
>> extensions keysDo: [:aClassName |
>>  (Smalltalk globals includesKey: aClassName) ifFalse:  [extensions
>> removeKey: aClassName].
>>  ].
>>  extensions := (aPackage  instVarNamed: 'metaclassExtensionSelectors').
>> extensions keysDo: [:aClassName |
>>  (Smalltalk globals includesKey: aClassName) ifFalse:  [extensions
>> removeKey: aClassName].
>>  ].
>>  ]
>>
>>
> Easier:
>
> 1) integrate http://code.google.com/p/pharo/issues/detail?id=6521
> 2) RPackageOrganizer initialize.
>
>
>>
>>
>>>  Cheers,
>>>
>>> --
>>> Mariano
>>> http://marianopeck.wordpress.com
>>>
>>>
>>
>>
>> --
>> Mariano
>> http://marianopeck.wordpress.com
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gforge.inria.fr/pipermail/pharo-project/attachments/20120805/a8109409/attachment.html>


More information about the Pharo-project mailing list