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