[Cuis-dev] [Ann] Refinements to Exception handling

Andres Valloud ten at smallinteger.com
Sun Oct 13 17:47:09 PDT 2019


One of the methods that won't work due to the closure indirection you 
mention is displayWorldSafely.  What a mess :(.

This method also illustrates the problem I referred to earlier: there is 
code written in such a way that changing it demands too much energy. 
The system users shouldn't be held hostage by the system's own code.

Maybe if we split the work it won't be that bad to clean up.  One way or 
the other, that work should have been done before pushing out the 
changes, as you well note.

I think the best way to proceed is to revert the changes for now, decide 
calmly what we will do about this (i.e. without the rush to cobble some 
random patch together), then do that.

On 10/13/19 17:25, Phil B wrote:
> Just did a quick look at senders of #on:do: and found these:
> 
> AndreasSystemProfiler>canWork
> Browser>contents:notifying:
> FeatureRequirement>require
> FeatureRequirement>satisfyRequirementsAndInstall
> MethodNode>generatePreSpur:using:
> MethodNode>generateSpur:using:
> RefactoringApplier>createAndValueHandlingExceptions:
> SmalltalkEditor>renameTemporary:
> SmalltalkEditor>withClassDefinitionNodeAndClassDo:ifErrorsParsing:
> SmalltalkEditor>withMethodNodeAndClassDo:ifErrorsParsing:
> SystemDictionary>okayToSave
> 
> That's ~15% of #on:do: senders in the base image *directly* returning 
> within the block.  (i.e. I didn't check any of the blocks passed as 
> parameters which might also do so or any of the other ways this might 
> occur)  I don't think this change is fully baked...
> 
> 
> On Sun, Oct 13, 2019 at 8:00 PM Phil B <pbpublist at gmail.com 
> <mailto:pbpublist at gmail.com>> wrote:
> 
>     It looks like we have at least some changes in the core image to
>     resolve.  World menu->Save as... now fails.  Has a scan of the image
>     been done to identify where these cases might be buried?
> 
>     On Sun, Oct 13, 2019 at 9:48 AM Juan Vuletich via Cuis-dev
>     <cuis-dev at lists.cuis.st <mailto:cuis-dev at lists.cuis.st>> wrote:
> 
>         Hi Folks,
> 
>         Some time ago, Andrés (with just a tad of help from me) fixed a
>         problem
>         in Exception handling. If exception handler blocks do non-local
>         return
>         (^stuff), they will skip execution of part of the Exception
>         handling
>         system code, breaking exception return values and possibly other
>         'bad
>         things'.
> 
>         I just pushed to GitHub a few updates with this work. Now, if an
>         exception handler does a non-local return, an Error will be
>         raised. We
>         also fixed a couple of places in the image where this was being
>         done.
>         BaseImageTests pass.
> 
>         This updates have some risk of breaking your code. If you you
>         get this
>         error: 'Exception handler blocks must not do non local returns',
>         then
>         you need to adjust your code. See updates #3917 to #3922 for the
>         changes
>         done to the base image.
> 
>         Thanks,
> 
>         -- 
>         Juan Vuletich
>         www.cuis-smalltalk.org <http://www.cuis-smalltalk.org>
>         https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev
>         https://github.com/jvuletich
>         https://www.linkedin.com/in/juan-vuletich-75611b3
>         @JuanVuletich
> 
>         -- 
>         Cuis-dev mailing list
>         Cuis-dev at lists.cuis.st <mailto:Cuis-dev at lists.cuis.st>
>         https://lists.cuis.st/mailman/listinfo/cuis-dev
> 


More information about the Cuis-dev mailing list