On 23 May 2018, at 13:53, Marcus Denker <marcus.denker@inria.fr> wrote:



On 23 May 2018, at 13:47, Marcus Denker <marcus.denker@inria.fr> wrote:



On 23 May 2018, at 13:30, Thierry Goubier <thierry.goubier@gmail.com> wrote:

2018-05-23 13:20 GMT+02:00 Sean P. DeNigris <sean@clipperadams.com>:
Marcus Denker-4 wrote
   method := Smalltalk compiler
                                   environment: environment;
                                   compile: 'tt ^MyClass���.

Awesome! Is it possible to override a global from /within/ a method (e.g. in
a test)?

I think at the class level by manipulating that class compiler

Yes. You can override the class side method:

in Behaviour, it is defined as

compiler
"Answer a compiler appropriate for source methods of this class."

^self compilerClass new
environment: self environment;
class: self

so you can just 

compiler
���Change the compiler environment "

^super compiler
environment: self myEnvironment


and it should work.

Here we can see, too, that we need to do more work. In Behaviour:

environment
"Return the environment in which the receiver is visible"
^Smalltalk globals

For classes to automatically compile with the environment they are in, we somehow need to return here
that environment��� 

This is already correct (Class overrides it, all classes have the ivar environment correctly set)

Marcus