[Reflectivity] Links on Literal Variables

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

[Reflectivity] Links on Literal Variables

Marcus Denker-4
Hi,

Lots of progress on the Reflectivity project…

What is now working is this:

1) define a simple “Halt once” link:

        haltLink := MetaLink new
                metaObject: Halt;
                selector: #once.

2) install on the GlobalVariable that is referencing class Object:

        Object binding link: haltLink.

3) enable haltOnce in the system Menu

—> next time the global variable “Object” is accessed, you get a halt.

Keep in mind that lots of things are not yet working… but every day some progress.

trello board is here: https://trello.com/b/m5cxaAxB/reflectivity

Next big issues to fix

- #after and #instead for LiteralVariable
- links on Slots and Temps
- more tests
- classes should be able to define which methods should use meta-recursing stopper
- make "Object methods do: #createTwin. Object methods do: #invalidate.” work

        Marcus



Reply | Threaded
Open this post in threaded view
|

Re: [Reflectivity] Links on Literal Variables

Ben Coman
On Wed, Sep 30, 2015 at 2:21 AM, Marcus Denker <[hidden email]> wrote:

> Hi,
>
> Lots of progress on the Reflectivity project…
>
> What is now working is this:
>
> 1) define a simple “Halt once” link:
>
>         haltLink := MetaLink new
>                 metaObject: Halt;
>                 selector: #once.
>
> 2) install on the GlobalVariable that is referencing class Object:
>
>         Object binding link: haltLink.
>
> 3) enable haltOnce in the system Menu
>
> —> next time the global variable “Object” is accessed, you get a halt.

I'm looking forward to when I'm familiar enough with this for to be
part of my instinctive workflow.  I get the feeling this will
revolutionize how our systems can be debugged.  Often I might have an
object I want to investigate but not know where to break into the code
to learn about it.  Sometimes thats putting halts in all accessors,
but that is tedious.

Now to make it easier to use what would be good is something like...
    anObject haltOnNextAccess.
which enables halt once just for this breakpoint (I presume this might
be possible)
Also maybe...
    anObject haltOnEveryAccess.
    anObject haltOnEveryAccessFor: 5 seconds.

On another track, is/can there be a facility that logs access rather
than halting.  Sometimes you get a faster understanding from observing
a lot of movement from further away than from freezing things and
going a step at a time from inside. Currently I sometimes find the
following helpful...
    Transcript crShow: thisContext printString ,'<<', thisContext
sender printString ,'<<', thisContext sender sender printString
but its tedious to plug into several locations. Maybe this could be
something like...
    anObject traceEveryAccessFor: 10 seconds contextDepth: 3.

cheers -ben

> Keep in mind that lots of things are not yet working… but every day some progress.
>
> trello board is here: https://trello.com/b/m5cxaAxB/reflectivity
>
> Next big issues to fix
>
> - #after and #instead for LiteralVariable
> - links on Slots and Temps
> - more tests
> - classes should be able to define which methods should use meta-recursing stopper
> - make "Object methods do: #createTwin. Object methods do: #invalidate.” work
>
>         Marcus
>
>
>

Reply | Threaded
Open this post in threaded view
|

Re: [Reflectivity] Links on Literal Variables

Marcus Denker-4
>
> I'm looking forward to when I'm familiar enough with this for to be
> part of my instinctive workflow.  I get the feeling this will
> revolutionize how our systems can be debugged.  Often I might have an
> object I want to investigate but not know where to break into the code
> to learn about it.  Sometimes thats putting halts in all accessors,
> but that is tedious.
>
> Now to make it easier to use what would be good is something like...
>    anObject haltOnNextAccess.
> which enables halt once just for this breakpoint (I presume this might
> be possible)
> Also maybe...
>    anObject haltOnEveryAccess.
>    anObject haltOnEveryAccessFor: 5 seconds.
>

Yes, and imagine it deeply integrated with the IDE: you can put
a (conditional, object specific) halt on anything, there will be a light-wight
“watcher” to look at values of variables and values, and so on...

> On another track, is/can there be a facility that logs access rather
> than halting.  Sometimes you get a faster understanding from observing
> a lot of movement from further away than from freezing things and
> going a step at a time from inside. Currently I sometimes find the
> following helpful...
>    Transcript crShow: thisContext printString ,'<<', thisContext
> sender printString ,'<<', thisContext sender sender printString
> but its tedious to plug into several locations. Maybe this could be
> something like...
>    anObject traceEveryAccessFor: 10 seconds contextDepth: 3.
>

Ah, that’s  a nice idea…. imagine that not with Transcript output
but a special tool somehow… a bit like a halt that does not halt
yet visualises the stack (execution flow) at a point in the code.

        Marcus