[squeak-dev] The Trunk: System-dtl.961.mcz
Jakob Reschke
jakob.reschke at student.hpi.de
Wed Aug 2 14:18:38 UTC 2017
Hi Chris,
enterForEmergencyRecovery is sent to the safeProject at the end of the method.
HTH,
Jakob
2017-08-02 16:15 GMT+02:00 Chris Cunningham <cunningham.cb at gmail.com>:
> Hi.
>
> This message really confuses me (as does the previous version). It checks
> for a safe project - I get that.
> But then, after if finds the safe project, it stores it in a temporary
> variable and does nothing else with it?
> What magic actually causes Squeak to USE that safe project? I can't find it
> in this method, nor in the caller of this method (#handlePrimitiveError:).
>
> Very confused,
> cbc
>
> On Wed, Aug 2, 2017 at 6:22 AM, <commits at source.squeak.org> wrote:
>>
>> David T. Lewis uploaded a new version of System to project The Trunk:
>> http://source.squeak.org/trunk/System-dtl.961.mcz
>>
>> ==================== Summary ====================
>>
>> Name: System-dtl.961
>> Author: dtl
>> Time: 2 August 2017, 9:22:02.611529 am
>> UUID: 4485dae2-bb1b-48ca-bdc1-5f1f4dd89eb0
>> Ancestors: System-eem.960
>>
>> When Project class>>tryOtherProjectForRecovery is searching for a safe
>> project to use for emergency recovery, test for projects of a type that the
>> current project inherits from, but do not require that they be of the same
>> class. This handles the case of errors in a FooMorphicProject that inherits
>> from MorphicProject, for which another Morphic project is not likely to be
>> suitable for handling a fatal error raised in the FooMorphicProject.
>>
>> Expected behavior when evaluating "Project handlePrimitiveError: 'Foobar'
>> "
>>
>> In an MVC project that is a chlid of a Morphic project, enter the Mophic
>> project and open a debugger on the process that failed in MVC.
>>
>> In a Mophic project that is a chlid of an MVC project, enter the MVC
>> project and open a debugger on the process that failed in Morphic.
>>
>> For the common case of a parent project of the same type as the project
>> from which the error is raised, do not attempt to enter another project, and
>> open an emergency evaluator instead.
>>
>> =============== Diff against System-eem.960 ===============
>>
>> Item was changed:
>> ----- Method: Project class>>tryOtherProjectForRecovery: (in category
>> 'error recovery') -----
>> tryOtherProjectForRecovery: errorMessage
>> "Try entering the parent project if it uses a different user
>> interface. We determine this by comparing the project's class."
>>
>> | safeProject nextProject |
>> nextProject := Project current.
>> safeProject := nil.
>> [safeProject notNil or: [nextProject isTopProject]] whileFalse: [
>> nextProject := nextProject parent.
>> + (Project current isKindOf: nextProject class)
>> - nextProject class == Project current class
>> ifFalse: [safeProject := nextProject]].
>> safeProject ifNotNil: [:p |
>> p enterForEmergencyRecovery.
>> "Active process will usually suspend after this."].!
>>
>>
>
More information about the Squeak-dev
mailing list
|