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

Guillermo Polito guillermopolito at gmail.com
Sun Aug 5 13:41:46 CEST 2012


http://code.google.com/p/pharo/issues/detail?id=6526 here you are :)

On Sun, Aug 5, 2012 at 1:39 PM, Mariano Martinez Peck <marianopeck at gmail.com
> wrote:

>
>
> 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.
>>
>>
>
> Indeed, I saw that later. That only helps to fix the existing ones but it
> does not solve the problem.
>
>
>
>>
>>>
>>>>  Cheers,
>>>>
>>>> --
>>>> Mariano
>>>> http://marianopeck.wordpress.com
>>>>
>>>>
>>>
>>>
>>> --
>>> 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/ee4b0e13/attachment.html>


More information about the Pharo-project mailing list