[squeak-dev] The Trunk: Tools-ct.988.mcz
commits at source.squeak.org
commits at source.squeak.org
Mon Sep 28 06:58:52 UTC 2020
Marcel Taeumel uploaded a new version of Tools to project The Trunk:
http://source.squeak.org/trunk/Tools-ct.988.mcz
==================== Summary ====================
Name: Tools-ct.988
Author: ct
Time: 25 September 2020, 4:56:31.616748 pm
UUID: 31bde789-95f1-2745-90b1-4b8ff66adcbb
Ancestors: Tools-ct.987
Hotfix for regression introduced in Tools-ct.987 (merge error). Please apologize any inconveniences!
=============== Diff against Tools-ct.987 ===============
Item was changed:
----- Method: Debugger>>contents:notifying: (in category 'accessing') -----
contents: aText notifying: aController
"Accept new method source of the selected context."
| selector classOfMethod category ctxt newMethod |
contextStackIndex = 0 ifTrue: [^ false].
"First, handle some edge cases"
selector := self selectedClass newParser parseSelector: aText.
"selector isDoIt ifTrue: [
currentCompiledMethod := self compileDoIt: aText]."
self flag: #todo. "ct: Recompile doIt method *without* creating method litters!! See Compiler>>#evaluateCue:ifFail:."
selector = self selectedMessageName ifFalse: [
"Different message compiled, delegating to super"
^ super contents: aText notifying: aController].
self selectedContext isExecutingBlock ifTrue: [
"If we are in a block context, we need to rewind the stack before ."
| home |
home := self selectedContext activeHome.
home ifNil: [
self inform: 'Method for block not found on stack, can''t edit and continue' translated.
^ false].
(self confirm: 'I will have to revert to the method from\which this block originated. Is that OK?' withCRs translated) ifFalse: [
^ false].
self resetContext: home changeContents: false.
"N.B. Only reset the contents if the compilation succeeds. If contents would be reset when compilation fails, both compiler error message and modifications were lost."
^ (self contents: aText notifying: aController)
ifTrue: [self contentsChanged];
yourself].
classOfMethod := self selectedClass.
category := self selectedMessageCategoryName.
"Do the actual compilation"
selector := classOfMethod
compile: aText
classified: category
notifying: aController.
selector ifNil: [^ false]. "compilation cancelled"
"Update views"
contents := aText.
newMethod := classOfMethod compiledMethodAt: selector.
newMethod isQuick ifTrue: [
self cutBackExecutionToSenderContext].
ctxt := interruptedProcess popTo: self selectedContext.
ctxt == self selectedContext
ifFalse: [self inform: 'Method saved, but current context unchanged\because of unwind error. Click OK to see error' withCRs translated]
ifTrue: [
newMethod isQuick ifFalse: [
interruptedProcess restartTopWith: newMethod.
+ interruptedProcess stepToSendOrReturn].
- self stepToStatement].
contextVariablesInspector object: nil].
self resetContext: ctxt.
Project current addDeferredUIMessage: [
self changed: #contentsSelection].
^ true!
More information about the Squeak-dev
mailing list
|