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