Ok, thank you very much :)

2009/12/10 Frederic Pluquet <fpluq...@ulb.ac.be>

> Oups... I answered too quickly ! It is not a bug :) !
>
> As explain in this 
> article<http://decomp.ulb.ac.be:9090/FrepSite/Papers/Fast%20Type%20Reconstruction%20for%20Dynamically%20Typed%20Programming%20Languages.pdf>,
> we link the variables (temporary variables, instance variables and returned
> values of methods) during the extraction of types. The links permit to
> associate some varaibles between them. For example in
>
> *OrderedCollection>>grow
>     "Become larger. Typically, a subclass has to override this if the
> subclass
>     adds instance variables."
>     | newArray |
>     newArray := Array new: self size + self growSize.
>     newArray replaceFrom: 1 to: array size with: array startingAt: 1.
>     array := newArray
> *
> RoelTyper links the temporary variable #newArray to the instance variable
> #array (because #newArray is assigned to #array).
>
> When you ask the extractedType by:
>
>
> * TypeCollector typeInstvar: #array ofClass: OrderedCollection.
>
> *
> the extractedType for #array contains the types assignements found for
> #array. And in the code, there are no one (no direct assignment of an object
> created by a message defined in the "instance creation" protocol of the
> class on which the message is sent (see the table of heuristics at the
> beginning of the page 4th of the paper)). But other linked extractedTypes
> has types assignements (as #newArray in OrderedCollection>>grow). So to
> retrieve this information in the extractedType of #array you must flatten
> the links (read the section 7 of the paper if you want more information),
> so:
>
> * (TypeCollector typeInstvar: #array ofClass: OrderedCollection)
> flattenLinks.
> *
> We don't flatten the links automatically because once flattened, the links
> are deleted from linked extractedTypes. We think it is important to keep
> this information available by default.
>
> The links are automatically flattened when you ask to calculate the
> possible types:
>
> *
>  (TypeCollector typeInstvar: #array ofClass: OrderedCollection) types.
> *
>
> Fréd
> ----
> Frédéric Pluquet
> Université Libre de Bruxelles (ULB)
> Assistant
> http://www.ulb.ac.be/di/fpluquet
>
>
> 2009/12/10 fpluquet <fpluq...@ulb.ac.be>
>
> Hello Cyrille,
>>
>> First of all, thanks for trying to use RoelTyper! It is always interesting
>> to have feedback !
>>
>> There are two things.
>> Firstly, you found a bug in RoelTyper :) RoelTyper should find some
>> assignments for #array in OrderedCollection (in OrderedCollection>>grow for
>> example). I must fix that.
>> Secondly, RoelTyper found the right type for #array: Array! When you
>> execute:
>>
>> * TypeCollector typeInstvar: #array ofClass: OrderedCollection.*
>>
>> it returns an ExtractedType (containing Assignments (normally :)) and
>> Messages sends). To merge information and find the possible types for this
>> extractedType you must send the message #types on it.
>>
>>   *(TypeCollector typeInstvar: #array ofClass: OrderedCollection) types.*
>>
>> giving: Array
>>
>> Fréd
>> ----
>> Frédéric Pluquet
>> Université Libre de Bruxelles (ULB)
>> Assistant
>> http://www.ulb.ac.be/di/fpluquet
>>
>>
>> 2009/12/10 Cyrille Delaunay <cy.delau...@gmail.com>
>>
>>>
>>>
>>> Hi,
>>>
>>> I'm trying to use RoelTyper in Pharo. A question I ask myself is: 'Is it
>>> normal that roelTyper doesn't always return some assignements' ?
>>> For example, when I evaluate:
>>>   TypeCollector typeInstvar: #array ofClass: OrderedCollection .
>>> the assignements returned is an empty collection. I would expect that
>>> even roelTyper doesn't retrieve the exact type, it would always return a
>>> collection of 'candidate' types.
>>> Am I using it in a wrong way?
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> Pharo-project mailing list
>>> Pharo-project@lists.gforge.inria.fr
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>
>>
>>
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project@lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
_______________________________________________
Pharo-project mailing list
Pharo-project@lists.gforge.inria.fr
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

Reply via email to