peter@celia.UUCP (Peter Farson) (08/15/89)
The other day, while browsing through the classes (Smalltalk/V Mac), I noticed a strange method in class Context. The source looked like this: value "Answer the result of evaluating the no argument block described by the receiver." self checkArgument: 0. ^ self value Now this seems very odd to me. It looked like an endless recursive loop to me, so I stuck a "self error: 'say something'" in it, and then tried sending this message to a block. No debug windows popped up. Only when I tried "[block] perform: #value" did it seem to actually execute the modified method. The only thing I can figure out is that the Smalltalk compiler treats some source code expressions as special cases, producing byte-codes that are optimized but that end up not invoking the method that it by definition should. The methods for "value:" and "value:value:" are similar. Does anyone know what's really going on here? If the compiler has exceptions to the rule, how many and what are they? If anyone knows something about this, I would very much like to hear from them. -- Can a bee be said to be Peter Farson An entire bee if celia!peter@tis.llnl.gov Half the bee is not a bee ...{ihnp4,ames}!lll-tis!celia!peter Due to some ancient injury?