> On 29 Apr 2015, at 22:59, Glenn Cavarlé <gl...@cavarle.fr> wrote:
> 
> Hi,
> 
> I'm playing with Slots and MethodWrappers to customize instVar
> reading/writing and method calls.
> In my experiments, Slots and MethodWrappers hold meta-description objects
> used at runtime to apply some filters, validations and to compose or
> delegate methods behavior.
> 
Interesting!

> I'm really interested in the progress of MetaLink, I saw that it will be
> possible to use hooks like #instead or #arround.
> Are these hooks can replace the use of MethodWappers ?

Yes!

> Will it be possible to call a MetaObject's method instead of a method's body
> and with the passed arguments ?
> 
Yes, this will work very soon… in a simple version (only one replace link 
allowed).
(Later this will be generalized AOP style as an #around with the possibility to 
“proceed”
to the replaced node).

What I am porting now from the prototypes is the functionality to hand arguments
over to meta objects.

before links on methods are already working:

link := MetaLink new
        metaObject: [ self halt ].

(ReflectivityExamples>>#exampleMethod) ast link: link.

execute it:

ReflectivityExamples new exampleMethod.

(ReflectivityExamples>>#exampleMethod) symbolic 

"'21 <20> pushConstant: [ self halt ]
22 <C9> send: value
23 <77> pushConstant: 2
24 <21> pushConstant: 3
25 <B0> send: +
26 <7C> returnTop’"

(This example, too, shows that a block can be a meta object, this means that 
this
can be used as a very easy to use instrumentation framework, too, without the 
need
to create explicit classes and methods for meta objects).

> The announcement of meta-levels gives me ideas, would not it be interesting
> to have something like meta-layers?

Yes!

> For instance, in order to address a layer with no MetaObjects execution, a
> layer with MetaObjects for logging or breakpoints, an other layer with
> custom MetaObjects, etc.
> I don't see how it would be possible to limit the scope of the active layers
> configuration, just for a block evaluation for exemple... From RFMetaContext
> maybe, but how ?…

One thing I want to add is to make the condition (optionally) into an object
and then allow reflectivitly to turn on/of links without having to actually 
change
the #condition: itself.

Then links themselves could target these control meta objects…

It is definitly interesting. E.g. one might want to have break points active, 
yet run the tests with them disabled.

        Marcus


Reply via email to