On Tue, Aug 25, 2009 at 2:16 PM, rdmerrio <[email protected]> wrote:
> I have defined a method, i.e., > > someMethod > anInstVariable := anotherInstVariable1 + anotherInstVariable2. > > I would like to intercept the acceptance of this method by the browser and > programatically determine what instance variables this method is using so > that I can grab these names for other processing tasks. > > Additionally, I would really like to be able to determine what instance > variables are being assigned to, for instance, anInstVariable in this case > and which ones are the "independent" instance variables, > anotherInstVariable1 and anotherInstVariable2 in this case. > > How can I do this? > Why? What are you trying to achieve? You're talking about some pretty intrusive techniques. Unless you're developing a code analyser of some sort, you probably should be looking at a better way of doing what you're doing. To capture the acceptance of a method (assuming you mean the action that happens when you press alt+s), you insert a bit of code into PluggableTextMorph>>accept. To determine which instance variables are being assigned to, you'll need to somehow look at the bytecodes. They're not too hard to analyse, but it can be a bit of work. Alternatively, maybe the refactory browser can help, or maybe you can look at the intermediate code that the compiler generates. The bytecodes are described here: http://burks.bton.ac.uk/burks/language/smaltalk/goldberg/blueb003.htm. They're in the "Blue book chapter 28" if you need to Google it. You'll want the "store" bytecodes. To see real bytecodes, either inspect "Morph>>#basicInitialize" to see a CompiledMethod, or use the "byteCodes" view in a Browser (hidden behind the "source" button). Gulik. -- http://gulik.pbwiki.com/
_______________________________________________ Beginners mailing list [email protected] http://lists.squeakfoundation.org/mailman/listinfo/beginners
