Fun with Kernel :)

Daniel Vainsencher danielv at
Fri Apr 4 17:22:59 UTC 2003

I think what's happening is that a few variants of Browser (browse
recent changes, browse versions) display class comments mixed in with
methods. This is the way they mark such not-quite-methods. I guess the
motivation for putting this code there is that messageset is something
these classes have in common.

I wouldn't pollute the kernel with this knowledge, maybe I'd prefer to
remove firstPrecodeCommentFor: from the kernel (into either some viewer
class or or a class extension).

Actually, thing might work just fine if you simply remove that test -
the next line will react the same way, since it won't be found in the
method dictionary.


Stephane Ducasse <ducasse at> wrote:
> hi all
> We are have fun with the kernel. here is an example.
> Behavior>>firstPrecodeCommentFor: selector
> 	"If there is a comment in the source code at the given selector that
> 	preceeds the body of the method, return it here, else return nil"
> 	"Behavior firstPrecodeCommentFor: #firstPrecodeCommentFor:"
> 	| parser source tree |
> 	(MessageSet isPseudoSelector: selector)
> 		ifTrue: ["Not really a selector"
> 			^ nil].
> 	source _ self
> 				sourceCodeAt: selector asSymbol
> 				ifAbsent: [^ nil].
> 	parser _ self parserClass new.
> 	tree _ parser
> 				parse: (ReadStream on: source)
> 				class: self
> 				noPattern: false
> 				context: nil
> 				notifying: nil
> 				ifFail: [^ nil].
> 	^ (tree comment
> 		ifNil: [^ nil]) first
> This method is linking the core of the kernel with a UI element. But
> What I do not understand is that the symbols in isPseudoSelector:
> are the one used by the browser to distinguish between some of its 
> state.
> MessageSet>>isPseudoSelector: aSelector
> 	"Answer whether the given selector is a special marker"
> 	^ #(#Comment #Definition #Hierarchy ) includes: aSelector
> Does anybody know when the method firstPrecodeCommentFor: can be 
> invoked with
> those symbol???
> Thanks back to fun and dark side of Squeak
> Stef and Alex
> Prof. Dr. Stéphane DUCASSE
>   "if you knew today was your last day on earth, what would you do 
> different? ...  especially if,
>   by doing something different, today might not be your last day on 
> earth" Calvin&Hobbes
> "The best way to predict the future is to invent it..." Alan Kay.
> Open Source Smalltalks:, 
> Free books for Universities at 
> Free Online Book at 

More information about the Squeak-dev mailing list