On Wed, Sep 30, 2015 at 2:21 AM, Marcus Denker <[email protected]> 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
>
>
>