[squeak-dev] Object new becomeForward: #normal
Levente Uzonyi
leves at caesar.elte.hu
Tue Jul 18 14:09:45 UTC 2017
On Tue, 18 Jul 2017, marcel.taeumel wrote:
> Hi, there.
>
> Why are there guards to prevent forward-becoming to immediates (chars, ints)
> but not to symbols?
The former is technically impossible due to different object
representations, the latter is possible and not restricted at all. For
example, true and false are not immediate objects, you can use #become*:
on them to blow your image up.
So, there's no restriction at all if it's technically possible to use
#become*:.
The responsibility model is the simplest here: use at your own risk.
Since this comes up every once in a while, I suggest a comment be added to
those methods stating the responsibility model explicitly.
I don't know how the VM handles immutability in this case, but it's
possible that it wouldn't let #become*: affect immutable objects. On the
other hand, I'm sure it would let you change fields of immutable objects
via #become*:, but that's not an issue in your case.
Levente
>
> This will break your image: "Object new becomeForward: #normal"
>
> ... because Cursor class MNU #normal ... :-) Either this is a bug or
> forward-becoming to symbols is not intended at all.
>
> Best,
> Marcel
>
>
>
> --
> View this message in context: http://forum.world.st/Object-new-becomeForward-normal-tp4955525.html
> Sent from the Squeak - Dev mailing list archive at Nabble.com.
More information about the Squeak-dev
mailing list
|