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

Andres Valloud ten at smallinteger.com
Sun Oct 13 17:27:25 PDT 2019


Yeah, I was just looking at that, pondering this bit:

	| wasCog isCog |
	isCog _ Smalltalk isRunningCog.
	[ wasCog _ self imageFormatVersionFromFile allMask: 1 ]
		on: Error
		do: [ :ignore |
			"probably save-as to non-existing file"
			^ true ].

Obviously, everybody knows that's what the error was, probably :P.

Andres.

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