Confused about SystemChangeNotification

Andreas Raab andreas.raab at gmx.de
Wed Apr 27 21:27:46 UTC 2005


Hi -

I am running into ever more trouble with SystemChangeNotification. Can 
somebody give me a brief rundown on how it is supposed to work? Any 
tests associated with it to document boundary cases? Here are two rather 
obscure issues that I am just running into:

a) When I compile a method in another category, no recategorized event 
is generated. Why? It is impossible to find out where a method "came 
from" when using the modified event. This is easy to fix since the code 
in ClassDescription>>addAndClassifySelector: selector withMethod: 
compiledMethod inProtocol: category notifying: requestor explicitly 
suppresses this notification. But the question remains - why do it in 
the first place?

b) When renaming a class the renamed event refers to the class under the 
old name. In other words, rather than getting our hands on the class 
under the name by which it is known in the environment we get it under 
the old name which no longer exists in the environment. Why? This is 
totally inconsistent - it exposes the fact that the invariant "aClass == 
aClass environment at: aClass name" is temporarily broken. Why?

If there are any good reasons for the strange behavior above I'd really 
like to know why it behaves that way.

Cheers,
   - Andreas



More information about the Squeak-dev mailing list