On Mon, Apr 29, 2013 at 3:57 PM, Eliot Miranda <eliot.miranda@gmail.com> wrote:
 
I don't understand how #3 fixes things.  If one has an alias to e.g. Error then all calls on Error should include references to the alias right?  So doesn't there need to be some clever code for literalEqual: so that ALiases dereference to get the actual binding?

Yeah, #3 is a partial fix.

We should definitely use #bindingOf: for comparing with bindings in a CompiledMethod, because that's what the Compiler uses to create those bindings in the first place.  Some of the other changes I've made in the past few days have the effect of only using Aliases when necessary—that is, when we're referring to a class or global by a different name from the one it was declared with. Between that and Environment>>recompileAll, we should have correct behaviour for the single-environment case that exists in the trunk at the moment.

For the multi-environment cases, we'll need to handle Aliases correctly, and I guess you're right about #literalEqual:. 

Colin