Re: [Pharo-project] Collect all references to AnObsoleteFoo
Ciao Roberto, Whenever you remove a class that is still referenced in the system, an ObsoleteClass takes the place of the removed class. In the late-bound spirit of Smalltalk, the system allows removing the classes and dealing with the current references later. If i may question the source of your problem: "a Dictionary (containing receivers of method calls, i.e., classes) that I need to serialize in a file (i.e., using Fuel)", are you sure you need to serialize the actual classes? or just the names? or even a description of the class within Ring? Think about what you are modeling with a Dictionary that holds <messages,set of receivers>, and maybe try to reify that concept. Fernando On Mon, Apr 1, 2013 at 9:58 PM, Max Leske <maxleske@gmail.com> wrote:
I've had the same problem just recently but am stuck in a bit of work right now. I hope to elaborate at length tomorrow.
Quick fix: if you *need* to serialize those classes, simply change the code so that fuel serializes them. To fix obsolete classes you need to remove all references to it, be it in a dictionary or in a compiled method where you used the class name. Can you post the list of classes that are obsolete?
Cheers, Max
On 01.04.2013, at 16:51, roberto.minelli@usi.ch wrote:
Hi,
I'm getting crazy about obsolete behaviors and any help here is really appreciated.
In a nutshell, I have a Dictionary (containing receivers of method calls, i.e., classes) that I need to serialize in a file (i.e., using Fuel).
Fuel returns an error in FLGlobalClassCluster>>#serializeGlobalClass:on: complaining that I'm trying to serialize an obsolete class.
Now my question is, apart from executing this small piece of code...
SmalltalkImage current fixObsoleteReferences. SystemNavigation new obsoleteBehaviors size > 0 ifTrue: [ SystemNavigation new obsoleteBehaviors inspect.]
â¦in which I discovered to have many obsolete references, how can I "browse" and eventually kill such references?
For me the entire "behavior" of obsolete classes is obscure and I don't know how those classes are originated. More important, I also don't know how to eliminate them.
Thanks in advance, Roberto
Thanks Fernando, On Apr 1, 2013, at 11:51 PM, Fernando Olivero <fernando.olivero@usi.ch> wrote:
Ciao Roberto,
Whenever you remove a class that is still referenced in the system, an ObsoleteClass takes the place of the removed class. In the late-bound spirit of Smalltalk, the system allows removing the classes and dealing with the current references later.
I see. I'm not sure I agree with this philosophy, but I see the point.
If i may question the source of your problem: "a Dictionary (containing receivers of method calls, i.e., classes) that I need to serialize in a file (i.e., using Fuel)", are you sure you need to serialize the actual classes? or just the names? or even a description of the class within Ring? Think about what you are modeling with a Dictionary that holds <messages,set of receivers>, and maybe try to reify that concept.
I totally agree with you Fernando. That was just a quick and dirty prototype ;)
Fernando
On Mon, Apr 1, 2013 at 9:58 PM, Max Leske <maxleske@gmail.com> wrote:
I've had the same problem just recently but am stuck in a bit of work right now. I hope to elaborate at length tomorrow.
Quick fix: if you *need* to serialize those classes, simply change the code so that fuel serializes them. To fix obsolete classes you need to remove all references to it, be it in a dictionary or in a compiled method where you used the class name. Can you post the list of classes that are obsolete?
Cheers, Max
On 01.04.2013, at 16:51, roberto.minelli@usi.ch wrote:
Hi,
I'm getting crazy about obsolete behaviors and any help here is really appreciated.
In a nutshell, I have a Dictionary (containing receivers of method calls, i.e., classes) that I need to serialize in a file (i.e., using Fuel).
Fuel returns an error in FLGlobalClassCluster>>#serializeGlobalClass:on: complaining that I'm trying to serialize an obsolete class.
Now my question is, apart from executing this small piece of code...
SmalltalkImage current fixObsoleteReferences. SystemNavigation new obsoleteBehaviors size > 0 ifTrue: [ SystemNavigation new obsoleteBehaviors inspect.]
â¦in which I discovered to have many obsolete references, how can I "browse" and eventually kill such references?
For me the entire "behavior" of obsolete classes is obscure and I don't know how those classes are originated. More important, I also don't know how to eliminate them.
Thanks in advance, Roberto
participants (2)
-
Fernando Olivero -
roberto.minelli@usi.ch