[squeak-dev] The Inbox: Tools-ct.988.mcz

commits at source.squeak.org commits at source.squeak.org
Fri Sep 25 14:56:34 UTC 2020


A new version of Tools was added to project The Inbox:
http://source.squeak.org/inbox/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