Hey Colin, something with Environments has had a basic IDE function broken for some time now. Trunk broken for long time can affect the community, could you help me get this fixed?
First, the problem can be observed simply by browsing references to the class Error, first from workspace text then from a class list. The root cause is that these use different ways to find the list of referencing methods. One uses:
(SystemNavigation default allCallsOn: (Smalltalk globals associationAt: #Error))
while the other uses:
(SystemNavigation default allCallsOn: (Smalltalk globals bindingOf: #Error))
The two expressions (bindingOf: vs. associationAt:) produce equivalent, but not identical ClassBindings. But since CompiledMethod>>#indexOfLiteral: is doing an identity-check on the ClassBinding #Error=>Error, it comes back false for the #associationAt: case.
So, what is the proper fix here? 1) make bindingOf: and associationAt: point to the same object? 2) change CompiledMethod>>#indexOfLiteral: to do an equality rather than identity check? 3) change the IDE code to use #bindingOf: instead of #associationAt:?
I've already been affected by this and would like to get it fixed, please advise.
Thanks, Chris