Hi, I have a simple snippet of code which says:
*someObject class compile: aMethod classified: someCategory notifying:
aRequestor.*
where aRequestor is a PluggableTextMorph.
Actually, when I try to compile a method with a temp var, letting the
compiler notify me when a temp var is needed, I always see the final
CompiledMethod with the wrong source. For example, compiling
someMethod
^someTemp
Is correctly updated to be
someMethod
| someTemp |
^someTemp
But, after the compilation process, when I get the compiled method source,
It just have
someMethod
^someTemp
Debugging, I ended up in
ClassDescriptioncompile: *text* classified: category withStamp: changeStamp
notifying: requestor logSource: logSource
| methodAndNode |
methodAndNode := self compile: text asString classified: category
notifying: requestor
trailer: self defaultMethodTrailer ifFail:
[^nil].
logSource ifTrue: [
self logMethodSource: *text* forMethodWithNode: methodAndNode
inCategory: category withStamp: changeStamp notifying:
requestor.
].
self addAndClassifySelector: methodAndNode selector withMethod:
methodAndNode
method inProtocol: category notifying: requestor.
self instanceSide noteCompilationOf: methodAndNode selector meta: self
isClassSide.
^ methodAndNode selector
Which is saving as the CompiledMethod source, the original text, not the one
which was changed in the PluggableTextMorph and compiled in the
methodAndNode object.
Well, I was looking how the Browser works, and I didn't realize the
difference... Can someone enlight me?
Thanks,
Guille