I asked nathanael to reply since he refactored roel's code.
Stef
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