'From Squeak3.4beta of ''1 December 2002'' [latest update: #5156] on 30 December 2002 at 10:37:45 am'! "Change Set: weakMsgSendFixes-nk Date: 30 December 2002 Author: Ned Konz, Rob Withers CS 5005u16-Events introduced a call to a method isReceiverOrAnyArgumentGarbage in Object>>actionSequence that was only understood (much later, after CS 5155WeakMessageSend2-nk-rw) by WeakMessageSends and WeakActionSequences. Unfortunately, if you had an ActionSequence or a MessageSend around in an action map, this would break, as they don't understand isReceiverOrAnyArgumentGarbage. I removed this call from the methods in Object so that any action maps that can answer asMinimalRepresentation will work. This includes: ActionSequence, WeakActionSequence, MessageSend (added), and WeakMessageSend. "! !Object methodsFor: 'events-accessing' stamp: 'nk 12/20/2002 17:48'! actionForEvent: anEventSelector "Answer the action to be evaluated when has been triggered." | actions | actions := self actionMap at: anEventSelector asSymbol ifAbsent: [nil]. actions ifNil: [^nil]. ^ actions asMinimalRepresentation! ! !Object methodsFor: 'events-accessing' stamp: 'nk 12/20/2002 17:48'! actionForEvent: anEventSelector ifAbsent: anExceptionBlock "Answer the action to be evaluated when has been triggered." | actions | actions := self actionMap at: anEventSelector asSymbol ifAbsent: [nil]. actions ifNil: [^anExceptionBlock value]. ^ actions asMinimalRepresentation! ! !Object methodsFor: 'events-registering' stamp: 'rww 12/30/2002 10:37'! when: anEventSelector send: aMessageSelector to: anObject self when: anEventSelector evaluate: (WeakMessageSend receiver: anObject selector: aMessageSelector)! ! !Object methodsFor: 'events-registering' stamp: 'rww 12/30/2002 10:37'! when: anEventSelector send: aMessageSelector to: anObject with: anArg self when: anEventSelector evaluate: (WeakMessageSend receiver: anObject selector: aMessageSelector arguments: (Array with: anArg))! ! !Object methodsFor: 'events-registering' stamp: 'rww 12/30/2002 10:37'! when: anEventSelector send: aMessageSelector to: anObject withArguments: anArgArray self when: anEventSelector evaluate: (WeakMessageSend receiver: anObject selector: aMessageSelector arguments: anArgArray)! ! !MessageSend methodsFor: 'converting' stamp: 'nk 12/20/2002 17:54'! asMinimalRepresentation ^self! ! !WeakActionSequence methodsFor: 'converting' stamp: 'nk 12/20/2002 17:45'! asMinimalRepresentation | valid | valid := self reject: [:e | e isReceiverOrAnyArgumentGarbage ]. valid size = 0 ifTrue: [^nil]. valid size = 1 ifTrue: [^valid first]. ^valid! ! !WeakActionSequence methodsFor: 'evaluating' stamp: 'nk 12/20/2002 17:44'! value "Answer the result of evaluating the elements of the receiver. Actually, return just the last result." | answer | self do: [:each | each isReceiverOrAnyArgumentGarbage ifFalse: [answer := each value]]. ^answer! ! !WeakActionSequence methodsFor: 'evaluating' stamp: 'nk 12/20/2002 17:44'! valueWithArguments: anArray "Return the last result" | answer | self do: [:each | each isReceiverOrAnyArgumentGarbage ifFalse: [answer := each valueWithArguments: anArray]]. ^answer! ! !WeakActionSequence methodsFor: 'testing' stamp: 'nk 12/20/2002 17:43'! isReceiverOrAnyArgumentGarbage ^self anySatisfy: [ :element | element isReceiverOrAnyArgumentGarbage ]! !