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

Reply via email to