getting the history of a method?

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

getting the history of a method?

abergel
Hi!

I have the following:

Object subclass: #A.
A compile: 'foo ^ 5'.
A compile: 'foo ^ 10'.

(A >> #foo) asHistoricalRingDefinition

But I have no idea how I can get the two time stamps of A>>foo and the two source code?

I cannot figure out what is the difference between asPassiveRingDefinition, asActiveRingDefinition, asFullRingDefinition…
These methods all return a RGMethodDefinition.

Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.




Reply | Threaded
Open this post in threaded view
|

Re: getting the history of a method?

Nicolai Hess


2015-06-21 2:47 GMT+02:00 Alexandre Bergel <[hidden email]>:
Hi!

I have the following:

Object subclass: #A.
A compile: 'foo ^ 5'.
A compile: 'foo ^ 10'.

(A >> #foo) asHistoricalRingDefinition

But I have no idea how I can get the two time stamps of A>>foo and the two source code?

I think we don't have this yet. (Maybe we don't need this, but we need better tool support for Ring).

You can see some examples how I played with RGMethods
in the version browser
scanVersionsOf: method class: aClass meta: meta category: cat selector: aSelector

and in ChangeSorterApplication
createRingMethodForRemovedSelector: aSelector inClass: aClass


 

I cannot figure out what is the difference between asPassiveRingDefinition, asActiveRingDefinition, asFullRingDefinition…
These methods all return a RGMethodDefinition.

Yes, all are RGMethodDefinitions, the difference is "where the real data is"
active ring -> image ( active ring method sourceCode -> code of the actual compiled method)
historical ring -> source/changes files ( historical ring method sourceCode -> code fetched from source/changes file (needs a valid sourcePointer))
passive ring -> nowhere, init by instantiation (passive ring method sourceCode -> whatever was provided by the RGMethodDefinition construction)

full ring definition controls what other elements are retrieved as ringdefinition, For example
every method has a package, but not every RGMethodDefinitions needs to now or has a package:

(A>>#foo) asRingDefinition package. -> nil
(A>>#foo) asFullRingDefinition package. ->  "RGPackage(Unclassified)"





 

Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.





Reply | Threaded
Open this post in threaded view
|

Re: getting the history of a method?

stepharo
In reply to this post by abergel
Alex

from memory an activeRing definition is always returning the current
method definition.
aspassive I guess is creating one that represents a method at a certain
point.
and yes we should continue to improving ring.

> Hi!
>
> I have the following:
>
> Object subclass: #A.
> A compile: 'foo ^ 5'.
> A compile: 'foo ^ 10'.
>
> (A >> #foo) asHistoricalRingDefinition
>
> But I have no idea how I can get the two time stamps of A>>foo and the two source code?

did you check the api?

>
> I cannot figure out what is the difference between asPassiveRingDefinition, asActiveRingDefinition, asFullRingDefinition…
> These methods all return a RGMethodDefinition.
Yes what is different is the way they access and return their source.

>
> Cheers,
> Alexandre