The next steo of this has been merged: we now evaluate DoIt methods in a way 
that we do not
        - need a method header
        - need to transfrom the AST for adding a return 

See the (now merged) PR of Denis here: 
https://github.com/pharo-project/pharo/pull/11463

This means that DoiT evaluation does not rely on the parse tree rewriter and 
does not need to
be pretty-printed anymore. (which dies speed up #evaluate:, too).

The screenshot shows code from a Playground, setting a playground binding a to 
1, then a temp b to 2, then it enters
the debugger due to the #halt.

In the debugger we can read a and b, and we can eval “b halt” to see that what 
used to be a “DoItIn:” accessing
b via the context now looks just like the code that we executed from the first 
debugger:




> On 24 Jun 2022, at 13:51, Marcus Denker <[email protected]> wrote:
> 
> Hi,
> 
> We finally merged a PR form Denis (Sorry for taking too long…) that enables 
> the use of DoitVariable in DoItIn: methods:
> 
> 
> <Dionisiydk_2022-Jun-23.jpeg>
> Denis: #pharo has finally transparent variables in the debugger doIts. No 
> ThisContext readVariable trick
> 
> And we could even get rid of #DoItIn:, after merging another small cleanup, 
> both  methods now is just #DoIt as a selector.
> 
> How does it work?
> 
> Denis:  It is the power of first class variables. There is DoItVariable fully 
> integrated now which represents variables from different context
> 
> Marcus: DoitVariable has the original Variable instance and the context (what 
> used to the ThisContext parameter of DoItIn:). It can be read reflectively by 
> sending #read, compiler delegates code generation to the Variables 
> (#emitValue:)
> 
> <DoItVariable.png>

Reply via email to