resent from a discussion on squeak-dev Hi David, Interesting! To my mind that definition is incorrect. I would expect the sender of a block to be the sender of the enclosing method, in which case the definition would arguably be BlockClosure methods for accessing sender ^self home sender A block activation's caller would be it's sender slot, so within a block you might refer to thisContext caller. But what is arguably a bug in my implementation is that within a block activation thisContext sender refers to the caller (the sender of value: to the activation's block) not to the sender of the enclosing method. I think I may have screwed up badly here and that the correct implementations should be MethodContext methods for accessing caller ^closureOrNil ifNil: [self error: 'this is a method activation and so has no caller'] ifNotNil: [sender] sender ^closureOrNil ifNil: [sender] ifNotNil: [closureOrNil outerContext sender] BlockClosure methods for accessing sender ^outerContext sender and either BlockClosure methods for accessing caller "Since a BlockClosure is by definition not an activation it does not have a caller. It has a sender because it is always created within the context of a method." ^nil or BlockClosure methods for accessing caller ^self error: 'this is an inactive block and so has no caller' I believe the pre-closure definitions are ContextPart methods for accessing sender ^sender BlockContext methods for accessing caller ^sender which to my mind is missing BlockContext methods for accessing sender ^home sender What do people think the right definitions should be? - Show quoted text - On Fri, Dec 18, 2009 at 8:36 PM, <commits@source.squeak.org> wrote: David T. Lewis uploaded a new version of Kernel to project The Trunk: http://source.squeak.org/trunk/Kernel-dtl.331.mcz ==================== Summary ==================== Name: Kernel-dtl.331 Author: dtl Time: 18 December 2009, 11:32:44 am UUID: 20ffffda-86bc-47a7-8eae-cd11b55aa65e Ancestors: Kernel-bs.330 Add BlockClosure>>sender required for MessageTally class>>tallySends: Harvested from Pharo (nice 4/14/2009 19:09). =============== Diff against Kernel-bs.330 =============== Item was added: + ----- Method: BlockClosure>>sender (in category 'debugger access') ----- + sender + "Answer the context that sent the message that created the receiver." + + ^outerContext sender!