[BUG]MessageNode(Object)>>doesNotUnderstand: #code

joel at ikestrel.com joel at ikestrel.com
Thu Jun 3 23:14:58 UTC 2004


I tried to inspect the following from a workspace:

([ :x | x + 1 ] decompile) code

The code method is:

^statements first code

The problem is that in the above, the first element in the statements
array is a MessageNode and MessageNode does not have the code method
defined on it.


3 June 2004 7:11:12 pm

VM: unix - a SmalltalkImage
Image: Squeak3.7beta [latest update: #5868]

SecurityManager state:
Restricted: false
FileAccess: true
SocketAccess: true
Working Dir /home/jshellman/data/dev/squeak/work
Trusted Dir /home/jshellman/data/dev/squeak/work/secure
Untrusted Dir /home/jshellman/data/dev/squeak/work/untrusted

MessageNode(Object)>>doesNotUnderstand: #code
	Receiver: {x + 1}
	Arguments and temporary variables: 
		aMessage: 	code
	Receiver's instance variables: 
		comment: 	nil
		pc: 	nil
		receiver: 	{x}
		selector: 	{+}
		precedence: 	2
		special: 	0
		arguments: 	#({1})
		sizes: 	#(nil)
		equalNode: 	nil
		caseErrorNode: 	nil

BlockNode>>code
	Receiver: {[:x | x + 1]}
	Arguments and temporary variables: 

	Receiver's instance variables: 
		comment: 	nil
		pc: 	nil
		arguments: 	#({x})
		statements: 	#({x + 1})
		returns: 	false
		nArgsNode: 	nil
		size: 	nil
		remoteCopyNode: 	nil
		temporaries: 	#()

UndefinedObject>>DoIt
	Receiver: nil
	Arguments and temporary variables: 
		x: 	nil
	Receiver's instance variables: 
nil

Compiler>>evaluate:in:to:notifying:ifFail:logged:
	Receiver: a Compiler
	Arguments and temporary variables: 
		textOrStream: 	'([ :x | x + 1 ] decompile) code'
		aContext: 	nil
		receiver: 	nil
		aRequestor: 	a TextMorphEditor
		failBlock: 	[] in TextMorphEditor(ParagraphEditor)>>evaluateSelection
{[FakeClassPool adopt: nil.  ^ #failedDoit]}...etc...
		logFlag: 	true
		methodNode: 	DoIt
	^ [:x | x + 1] decompile code
		method: 	a CompiledMethod (3655)
		value: 	nil
		selector: 	#DoIt
	Receiver's instance variables: 
		sourceStream: 	a ReadStream '([ :x | x + 1 ] decompile) code'
		requestor: 	a TextMorphEditor
		class: 	UndefinedObject
		context: 	nil
		parserClass: 	Parser
		cacheDoItNode: 	true


--- The full stack ---
MessageNode(Object)>>doesNotUnderstand: #code
BlockNode>>code
UndefinedObject>>DoIt
Compiler>>evaluate:in:to:notifying:ifFail:logged:
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[] in TextMorphEditor(ParagraphEditor)>>evaluateSelection {[rcvr class
evaluatorClass new   evaluate: self selection string   in: ctxt ...]}
BlockContext>>on:do:
TextMorphEditor(ParagraphEditor)>>evaluateSelection
TextMorphEditor(ParagraphEditor)>>inspectIt
TextMorphEditor>>inspectIt:
TextMorphEditor(ParagraphEditor)>>dispatchOnCharacter:with:
TextMorphEditor>>dispatchOnCharacter:with:
TextMorphEditor(ParagraphEditor)>>readKeyboard
TextMorphEditor>>readKeyboard
[] in TextMorphForEditView(TextMorph)>>keyStroke: {[editor
readKeyboard]}
TextMorphForEditView(TextMorph)>>handleInteraction:fromEvent:
TextMorphForEditView>>handleInteraction:fromEvent:
TextMorphForEditView(TextMorph)>>keyStroke:
TextMorphForEditView>>keyStroke:
TextMorphForEditView(TextMorph)>>handleKeystroke:
KeyboardEvent>>sentTo:
TextMorphForEditView(Morph)>>handleEvent:
TextMorphForEditView(Morph)>>handleFocusEvent:
[] in HandMorph>>sendFocusEvent:to:clear: {[ActiveHand := self. 
ActiveEvent := anEvent.  result := focusHolder     han...]}
[] in PasteUpMorph>>becomeActiveDuring: {[aBlock value]}
BlockContext>>on:do:
PasteUpMorph>>becomeActiveDuring:
HandMorph>>sendFocusEvent:to:clear:
HandMorph>>sendEvent:focus:clear:
HandMorph>>sendKeyboardEvent:
HandMorph>>handleEvent:
HandMorph>>processEvents
[] in WorldState>>doOneCycleNowFor: {[:h |  ActiveHand := h.  h
processEvents.  capturingGesture := capturingGest...]}
Array(SequenceableCollection)>>do:
WorldState>>handsDo:
WorldState>>doOneCycleNowFor:
WorldState>>doOneCycleFor:
PasteUpMorph>>doOneCycle
[] in Project class>>spawnNewProcess {[[World doOneCycle.  Processor
yield.  false] whileFalse.  nil]}
[] in BlockContext>>newProcess {[self value.  Processor
terminateActive]}



More information about the Squeak-dev mailing list