On Sat, Aug 4, 2012 at 2:41 PM, Mariano Martinez Peck <[email protected]
> wrote:

>
>
> On Sat, Aug 4, 2012 at 2:34 PM, Mariano Martinez Peck <
> [email protected]> 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
>
>

Reply via email to