[squeak-dev] Re: Resume Problems
Zulq Alam
me at zulq.net
Fri Dec 19 16:13:04 UTC 2008
Hi Klaus,
Klaus D. Witzel wrote:
> Nah, the result has nothing to do with #on:do: resuming with 1, you better
> try
>
> [('abc' + 1) + 1]
> on: MessageNotUnderstood
> do: [:e | e resume: -1]
>
> which still says 2. This because someone, behind you back, put #asNumber
> arithmethic into ByteString ... now this attempts (Number readFrom: 'abc')
> which gives 0 for your +1 +1 and so 2.
>
> You may want to start DNU testing with ('abc' break; + 1) and then see
> where it goes.
Hmm... I think something is not right or at the very least the semantics
are subtly different than I expect.
VisualWorks:
[Object new blah + 1]
on: MessageNotUnderstood
do: [:e | e resume: 1] " = 2 "
[MessageNotUnderstood signal + 1]
on: MessageNotUnderstood
do: [:e | e resume: 1] " = 2 "
Squeak:
[Object new blah + 1]
on: MessageNotUnderstood
do: [:e | e resume: 1] " infinite recursion!!! "
[MessageNotUnderstood signal + 1]
on: MessageNotUnderstood
do: [:e | e resume: 1] " = 2 "
If I look at doesNotUnderstand: in both I see that in VW the resumed
value is returned. In Squeak is is not... surely this can't be right?
As for my problem, I think a simpler solution is to pass an
adaptor/proxy object to the block rather than the tag itself. This
adaptor can then marshal behaviour such that it will act as a message
eating null if it receives an MNU from the tag it's looking after.
Thanks,
Zulq.
More information about the Squeak-dev
mailing list
|