The reason for the question is strictly pedagogical. I am learning
> Send Beginners mailing list submissions to
>
[hidden email]
>
> To subscribe or unsubscribe via the World Wide Web, visit
>
http://lists.squeakfoundation.org/mailman/listinfo/beginners> or, via email, send a message with subject or body 'help' to
>
[hidden email]
>
> You can reach the person managing the list at
>
[hidden email]
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of Beginners digest..."
>
>
> Today's Topics:
>
> 1. How to introspect method instance variables (rdmerrio)
> 2. Re: How to introspect method instance variables
> (Michael van der Gulik)
> 3. Re: How to introspect method instance variables (Yoshiki Ohshima)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Mon, 24 Aug 2009 21:16:16 -0500
> From: rdmerrio <
[hidden email]>
> Subject: [Newbies] How to introspect method instance variables
> To:
[hidden email]
> Message-ID: <
[hidden email]>
> Content-Type: text/plain; charset=ISO-8859-1; format=flowed
>
> 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?
>
> Thanks
>
>
> ------------------------------
>
> Message: 2
> Date: Tue, 25 Aug 2009 14:34:18 +1200
> From: Michael van der Gulik <
[hidden email]>
> Subject: Re: [Newbies] How to introspect method instance variables
> To: "A friendly place to get answers to even the most basic questions
> about Squeak." <
[hidden email]>
> Message-ID:
> <
[hidden email]>
> Content-Type: text/plain; charset="iso-8859-1"
>
> On Tue, Aug 25, 2009 at 2:16 PM, rdmerrio <
[hidden email]> 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.
>
>