> On 23 May 2018, at 13:53, Marcus Denker <[email protected]> wrote:
> 
> 
> 
>> On 23 May 2018, at 13:47, Marcus Denker <[email protected]> wrote:
>> 
>> 
>> 
>>> On 23 May 2018, at 13:30, Thierry Goubier <[email protected]> wrote:
>>> 
>>> 2018-05-23 13:20 GMT+02:00 Sean P. DeNigris <[email protected]>:
>>>> 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

Reply via email to