[squeak-dev] The Inbox: Kernel-jar.1399.mcz

Jakob Reschke jakres+squeak at gmail.com
Tue May 4 19:10:54 UTC 2021


Hi Jaromir,

Thank you for this survey! At least we can take away that we will not
hurt portability much by changing anything here...

Am Di., 4. Mai 2021 um 20:06 Uhr schrieb Jaromir Matas <m at jaromir.net>:
>
> One more argument and then I'll leave it :) If you try the following example
> where #return is replaced by #resume, Squeak (and Pharo and VA) will fail
> completely raising a cannot return error:
>
> | x |
> x:=''.
> [
>         [1/0. x:=x,'B'] on: ZeroDivide do: [:ex | ex signal. x:=x,'A'. ex resume].
> "handler 1"
>         x:=x,'1'
> ] on: ZeroDivide do: [:ex | ex resume]. "handler 2"
> x:=x,'2'.
> x
>

For non-resumable exceptions, this would be okay (although the error
should not read "Cannot return"). However, since ZeroDivide is
explicitly resumable, this is a bug. :-)

> So my final suggestion is to define the behavior for re-signaling as
> equivalent to #outer

Makes total sense to me.

Kind regards,
Jakob


More information about the Squeak-dev mailing list