<div dir="auto">At least if they are aware of the feature... Would it make sense to place a hint to it in the recovery world? For example in the debugger?</div><div class="gmail_extra"><br><div class="gmail_quote">Am 07.12.2017 09:13 schrieb "Marcel Taeumel" <<a href="mailto:marcel.taeumel@hpi.de">marcel.taeumel@hpi.de</a>>:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div id="m_433280632197529449__MailbirdStyleContent" style="font-size:12pt;font-family:calibri;color:#000000">
                                        Hi Dave.<div><br></div><div>Cool! :) Since we have "Enter previous project", one will not get lost after fixing the particular bug and continuing the task.</div><div><br></div><div>B est,</div><div>Marcel</div><div class="m_433280632197529449mb_sig"></div><blockquote class="m_433280632197529449history_container" type="cite" style="border-left-style:solid;border-width:1px;margin-top:20px;margin-left:0px;padding-left:10px">
                        <p style="color:#aaaaaa;margin-top:10px">Am 07.12.2017 04:12:06 schrieb David T. Lewis <<a href="mailto:lewis@mail.msen.com" target="_blank">lewis@mail.msen.com</a>>:</p>This is an extension of Marcel's tryOtherProjectForRecovery: mechanism.<br><br>My working image has many Morphic projects, and a few MVC projects, but in<br>general the Morphic projects do not have an MVC project as a parent project.<br><br>This change allows a fatal error in the UI for any of the Morphic projects<br>to find any available MVC project and use it for error recovery.<br><br>For example, if I am in a Mophic project and I comment out the implementation<br>of Morph>>bounds, this leads to a fatal error. Normally this would have dropped<br>into an emergency evaluator. With this change, we instead enter an MVC project<br>with a debugger on the failure that occurred in the Morphic UI.<br><br>Dave<br><br><br>On Thu, Dec 07, 2017 at 02:52:28AM +0000, <a href="mailto:commits@source.squeak.org" target="_blank">commits@source.squeak.org</a> wrote:<br>> David T. Lewis uploaded a new version of System to project The Inbox:<br>> <a href="http://source.squeak.org/inbox/System-dtl.981.mcz" target="_blank">http://source.squeak.org/<wbr>inbox/System-dtl.981.mcz</a><br>> <br>> ==================== Summary ====================<br>> <br>> Name: System-dtl.981<br>> Author: dtl<br>> Time: 6 December 2017, 9:52:13.947225 pm<br>> UUID: d00b5ac2-0e56-40d3-91d6-<wbr>7803be283e1c<br>> Ancestors: System-mt.980<br>> <br>> For emergency evaluator handling, Project class>>handlePrimitiveError: will first try to find a parent project of different type (e.g. MVC if current project is Morphic, or vice versa). If found, the other project is opened, and the error is handled there. If no such project is found, then the traditional emergency evaluator transcript is opened.<br>> <br>> Extend this strategy by first checking parent project types, and if not successful search all projects to find any project of different type.<br>> <br>> A typical scenario is the case of an image with many Morphic projects, and one MVC project anywhere in the project hierarchy. In the event of an unrecoverable error in any of the Morphic projects, the MVC project will be identified as the project for emergency recovery. This permits an MVC debugger to be used to recover from the error condition, after which the failed Morphic user interface can be reentered.<br>> <br>> =============== Diff against System-mt.980 ===============<br>> <br>> Item was changed:<br>>   ----- Method: Project class>><wbr>tryOtherProjectForRecovery: (in category 'error recovery') -----<br>>   tryOtherProjectForRecovery: errorMessage<br>>      "Try entering the parent project if it uses a different user 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>>                     ifFalse: [safeProject := nextProject]].<br>> + <br>> +        "Parent project was not of a different type. Search through all known<br>> +      projects to find any one that is of different project type."<br>> +       safeProject ifNil: [<br>> +            Smalltalk garbageCollect.<br>> +               safeProject := Project allSubInstances<br>> +                  detect: [ :proj | proj class ~= Project<br>> +                                 or: [ (proj isKindOf: Project current class) not ] ]<br>> +                    ifNone: [ nil ] ].<br>> + <br>>       safeProject ifNotNil: [:p | <br>>              p enterForEmergencyRecovery.<br>>              "Active process will usually suspend after this."].!<br>> <br>> <br><br>
                        </blockquote>
                                        </div></div><br><br>
<br></blockquote></div></div>