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

Nicolas Cellier nicolas.cellier.aka.nice at gmail.com
Tue May 4 20:03:48 UTC 2021


Waouh, you're exploring dark corners ;)

Le mar. 4 mai 2021 à 21:11, Jakob Reschke <jakres+squeak at gmail.com> a écrit :
>
> 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.
>

+1 too, it should be fairly easy to implement (just check for nil
signalContext or not in signal)

> Kind regards,
> Jakob
>


More information about the Squeak-dev mailing list