grrrr and the same happens for methods that are removed....they are not removed from the RPackage :(
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]. > ]. > ] > > > >> Cheers, >> >> -- >> Mariano >> http://marianopeck.wordpress.com >> >> > > > -- > Mariano > http://marianopeck.wordpress.com > > -- Mariano http://marianopeck.wordpress.com
