On Thu, Jul 5, 2012 at 12:41 PM, Frank Shearar frank.shearar@gmail.com wrote:
Does that mean that given libraries Foo and Bar that both define Object >> #thing, you provide some conflict resolution (say, {#thing1 -> (Foo at: #Object) >> #thing.}), and then in your Environment you have some method
doIt ^ self thing1
Something like that. You'd do some kind of aliasing, like with globals, but I don't think you'd specify how #thing1 would resolve to a compiled method (that would prevent dynamic message dispatch). Instead you might so something like {#thing1 -> #Foo}. Then the scanner would find Foo's version of #thing when it encountered #thing1. That would make decompilation show #thing instead of #thing1. Or you could do something exotic with name mangling and ObjectsAsMethods, or... well, this is why I don't want to get into it yet. :-)
And while I'm drooling about the idea of a modular Squeak environment, what can I/we do to help this first stage?
I think the first stage is to introduce Environment, and install an instance as "Smalltalk globals" instead of a SystemDictionary.
Colin