[squeak-dev] The Trunk: Tools-ct.1122.mcz

commits at source.squeak.org commits at source.squeak.org
Sun Jan 30 23:10:09 UTC 2022


Christoph Thiede uploaded a new version of Tools to project The Trunk:
http://source.squeak.org/trunk/Tools-ct.1122.mcz

==================== Summary ====================

Name: Tools-ct.1122
Author: ct
Time: 31 January 2022, 12:09:47.193979 am
UUID: a16ebf6e-8c03-a644-a2d8-1165ac1ef7ff
Ancestors: Tools-mt.1121

Protects the debugger against evaluating a symbol label as a selector on the model.

Formerly, the following would break your project with a recursive error:

	[] newProcess debugWithTitle: #myDebugger full: false

Thanks to Marcel for the help!

=============== Diff against Tools-mt.1121 ===============

Item was changed:
  ----- Method: Debugger>>buildNotifierWith:label:message: (in category 'toolbuilder') -----
  buildNotifierWith: builder label: label message: messageString
  	| windowSpec listSpec textSpec panelSpec quads |
  	windowSpec := builder pluggableWindowSpec new
  		model: self;
  		extent: self initialExtentForNotifier;
+ 		label: label asString;
- 		label: label;
  		children: OrderedCollection new.
  
  	panelSpec := builder pluggablePanelSpec new.
  	panelSpec children: OrderedCollection new.
  	quads := self preDebugButtonQuads.
  	(self interruptedContext selector == #doesNotUnderstand:) ifTrue: [
  		quads := quads copyWith: 
  			{ 'Create'. #createMethod. #magenta. 'create the missing method' }
  	].
  	(#(#notYetImplemented #shouldBeImplemented #requirement) includes: self interruptedContext selector) ifTrue: [
  		quads := quads copyWith: 
  			{ 'Create'. #createImplementingMethod. #magenta. 'implement the marked method' }
  	].
  	(self interruptedContext selector == #subclassResponsibility) ifTrue: [
  		quads := quads copyWith: 
  			{ 'Create'. #createOverridingMethod. #magenta. 'create the missing overriding method' }
  	].
  	quads do:[:spec| | buttonSpec |
  		buttonSpec := builder pluggableButtonSpec new.
  		buttonSpec model: self.
  		buttonSpec label: spec first.
  		buttonSpec action: spec second.
  		buttonSpec help: spec fourth.
  		spec size >= 5 ifTrue: [buttonSpec enabled: spec fifth].
  		panelSpec children add: buttonSpec.
  	].
  	panelSpec layout: #horizontal. "buttons"
  	panelSpec frame: self preDebugButtonQuadFrame.
  	windowSpec children add: panelSpec.
  
  	Preferences eToyFriendly | messageString notNil ifFalse:[
  		listSpec := builder pluggableListSpec new.
  		listSpec 
  			model: self;
  			list: #contextStackList; 
  			getIndex: #contextStackIndex; 
  			setIndex: #debugAt:; 
  			icon: #messageIconAt:;
  			helpItem: #messageHelpAt:; 
  			frame: self contextStackFrame.
  		windowSpec children add: listSpec.
  	] ifTrue:[
  		message := messageString.
  		textSpec := builder pluggableTextSpec new.
  		textSpec 
  			model: self;
  			getText: #preDebugMessageString; 
  			setText: nil; 
  			selection: nil; 
  			menu: #debugProceedMenu:;
  			frame: self contextStackFrame.
  		windowSpec children add: textSpec.
  	].
  
  	^windowSpec!



More information about the Squeak-dev mailing list