A new version of Tools was added to project The Inbox:
http://source.squeak.org/inbox/Tools-ct.874.mcz ==================== Summary ==================== Name: Tools-ct.874 Author: ct Time: 12 August 2019, 5:54:52.524878 pm UUID: ff9f29fc-77ac-314e-879b-b5040a5e102f Ancestors: Tools-mt.870 Feature: Remove message in Debugger =============== Diff against Tools-mt.870 =============== Item was added: + ----- Method: Debugger>>findCleanHomeBelow: (in category 'context stack (message list)') ----- + findCleanHomeBelow: method + + | dirtyIndex | + dirtyIndex := contextStack size + 1. + contextStack reverse detect: [:context | + dirtyIndex := dirtyIndex - 1. + context method = method]. + ^ dirtyIndex + 1! Item was changed: ----- Method: Debugger>>mainContextStackMenu: (in category 'context stack menu') ----- mainContextStackMenu: aMenu "Set up the menu appropriately for the context-stack-list, unshifted" <contextStackMenuShifted: false> ^ aMenu addList: #( ('fullStack (f)' fullStack) ('restart (r)' restart) ('proceed (p)' proceed) ('step (t)' doStep) ('step through (T)' stepIntoBlock) ('send (e)' send) ('where (w)' where) ('peel to first like this' peelToFirst) - ('return entered value' returnValue) - ('toggle break on entry' toggleBreakOnEntry) ('senders of (n)' browseSendersOfMessages) ('implementors of (m)' browseMessages) ('inheritance (i)' methodHierarchy) - ('versions (v)' browseVersions) - ('references (r)' browseVariableReferences) ('assignments (a)' browseVariableAssignments) - ('class refs (N)' browseClassRefs) ('browse full (b)' browseMethodFull) ('file out ' fileOutMessage) + ('remove method (x) ' removeMessage) - ('copy bug report to clipboard' copyBugReportToClipboard)); yourself ! Item was added: + ----- Method: Debugger>>removeMessage (in category 'context stack menu') ----- + removeMessage + + | oldContext method cleanIndex confirmation | + self okToChange ifFalse: [^ false]. + contextStackIndex isZero ifTrue: [^ false]. + + oldContext := self selectedContext. + method := oldContext method. + cleanIndex := self findCleanHomeBelow: method. + contextStack at: cleanIndex ifAbsent: [ + self inform: 'Sender of method not found on stack, can''t remove message'. + ^ false]. + (self confirm: 'I will have to revert to the sender of this message. Is that OK?') + ifFalse: [^ false]. + + confirmation := self systemNavigation + confirmRemovalOf: method selector + on: method methodClass. + confirmation = 3 ifTrue: [^ self]. + self selectedClassOrMetaClass removeSelector: method selector. + + self + contextStackIndex: cleanIndex oldContextWas: oldContext; + tryRestartFrom: self selectedContext. + confirmation = 2 + ifTrue: [self systemNavigation browseAllCallsOn: method selector].! Item was changed: ----- Method: Debugger>>restart (in category 'context stack menu') ----- restart "Proceed from the initial state of the currently selected context. The argument is a controller on a view of the receiver. That view is closed." "Closing now depends on a preference #restartAlsoProceeds - hmm 9/7/2001 16:46" + | unwindError | - | ctxt noUnwindError | self okToChange ifFalse: [^ self]. self checkContextSelection. + unwindError := self tryRestartFrom: self selectedContext. + (Preferences restartAlsoProceeds and: [unwindError not]) + ifTrue: [self proceed].! - ctxt := interruptedProcess popTo: self selectedContext. - noUnwindError := false. - ctxt == self selectedContext ifTrue: [ - noUnwindError := true. - interruptedProcess restartTop; stepToSendOrReturn]. - self resetContext: ctxt. - (Preferences restartAlsoProceeds and: [noUnwindError]) ifTrue: [self proceed]. - ! Item was added: + ----- Method: Debugger>>tryRestartFrom: (in category 'context stack menu') ----- + tryRestartFrom: context + "Try to restart from the initial state of the context. + Return whether an unwind error occurred." + + | actualContext unwindError | + actualContext := interruptedProcess popTo: context. + unwindError := actualContext ~= context. + unwindError ifFalse: [ + interruptedProcess restartTop; stepToSendOrReturn]. + self resetContext: actualContext. + ^ unwindError! |
Free forum by Nabble | Edit this page |