Re: TestCase question
Posted by
Stéphane Ducasse on
Apr 13, 2011; 5:35am
URL: https://forum.world.st/TestCase-question-tp3445764p3446330.html
>>>
>>
>>
>> Interesting, I would never have guessed the test would be broken at first sight. So maybe some people enlightened in the ways of the compiler can provide a better explanation than me. Here is my guess:
>>
>> #(1) is a special construct which creates a compile-time array. The compile-time makes the trick: in short the array is more or less encoded directly into the bytecodes of the method as a constant.
>> But modifying the array with #at:put: directly modifies the bytecodes in the compiled method itself. So you create a side-effect directly into your method.
>>
>> Am I the only one to find this a bit dangerous and not intuitive? Is it a well-known behavior?
>
> I would never have guessed that in a million years.
welcome to the time traveling machine
it is a bit ugly and nobody should rely on such bad behavior.
Consider that it should not exist.
Stef