Sounds great! What happens if a method is recompiled. All metalinks are gone 
then?

Norbert

Am 30.05.2013 um 18:15 schrieb Camille Teruel <camille.ter...@gmail.com>:

> Hello everyone,
> 
> Reflectivity beta is out ! 
> 
> Reflectivity is a tool that permit to annotate AST nodes with "metalinks". 
> You can put metalinks at different "positions":
> before: the metalink is executed before the node
> instead: the metalink is executed instead the node
> after: the metalink is executed after the node
> onError: the metalink is executed only if the execution of the node raises an 
> error
> onSuccess: the metalink is executed only if the execution of the node raises 
> no error
> 
> When you put metalinks on some node of a method's AST, a wrapper is installed 
> in place of the method. When executed, this wrapper compiles an expanded 
> version of the AST that takes metalinks into account and install the 
> resulting compiled method.
> 
> Examples:
> 
> increaseAllNumbersIn: aCompiledMethod
>       "A method that increases all numbers in aCompiledMethod"
>       aCompiledMethod reflectiveAST 
>               forAllNodes: [ :node | node isLiteral and: [ node value 
> isNumber ] ]
>               putInstead: [ :node | RFMetalink fromExpression: (node value + 
> 1) asString ].
> 
> removeMetalinksIn: aCompiledMethod
>       aCompiledMethod reflectiveAST removeAllMetalinks
> 
> In nautilus, you have a menu entry called 'Edit metalinks' that permit to 
> edit the metalinks of the node corresponding to the selected piece of code. 
> As an example use case, another entry called 'Put breakpoint' adds a metalink 
> that corresponds to 'Halt now' before the selected node.
> 
> Remember that it is a beta, so you might find errors and things are likely to 
> change.
> 
> You can load Reflectivity with:
>  
> Gofer it
>       smalltalkhubUser: 'RMoD' project: 'Reflectivity';
>       configuration;
>       loadDevelopment
> 
> Or you can download it from RMoD's CI:
> https://ci.inria.fr/rmod/job/Reflectivity/
> 
> Camille

Reply via email to