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