[pypy-dev] funny observation with range

Christian Tismer tismer at stackless.com
Mon Sep 12 08:13:33 CEST 2005


Samuele Pedroni wrote:

> Christian Tismer wrote:
...
>> I would like to understand why the annotator thinks this must
>> become a list, and how I can convince it to take a different action.
>> I think, using the variable variant would be adequate in this case.
> 
> you changed what happens on range calls annotation-wise, but not the 
> behavior of what should occur when types are mixed, this is specified by 
> the union operation which for list/ranges basically goes through the 
> ListItem.merge, which still has the behavior that mixing different-step
> ranges unifies to list:
> 
>    if other.range_step != self.range_step:
>        self.range_step = None
> 
> in listdef.py . If I have understood your changes you want 0 in this 
> case unless one of the range_step is already None meaning list.
> 
> Notice that if you change this you probably need to change 
> rtype_builtin_range because this assumes that it can use partially the 
> information in its arguments instead of about the result to decide
> what to produce.

Ah, thank you very much, that was the missing spot. No magic at all,
but more places to look into. I will add something to cope with this.

Although I don't believe it is worthwhile to do in this case,
I guess it would be much more difficult to specialize on step?

thanks again - ciao - chris

-- 
Christian Tismer             :^)   <mailto:tismer at stackless.com>
tismerysoft GmbH             :     Have a break! Take a ride on Python's
Johannes-Niemeyer-Weg 9A     :    *Starship* http://starship.python.net/
14109 Berlin                 :     PGP key -> http://wwwkeys.pgp.net/
work +49 30 802 86 56  mobile +49 173 24 18 776  fax +49 30 80 90 57 05
PGP 0x57F3BF04       9064 F4E1 D754 C2FF 1619  305B C09C 5A3B 57F3 BF04
      whom do you want to sponsor today?   http://www.stackless.com/



More information about the Pypy-dev mailing list