2011/11/26 Robert Bradshaw <rober...@math.washington.edu>: > On Sat, Nov 26, 2011 at 8:10 AM, Vitja Makarov <vitja.maka...@gmail.com> > wrote: >> Hi! >> >> I'm now trying to make inlined generator expressions work again. And I >> found strange thing: >> >> inlined_generator_expression.pyx: >> >> def range_sum(int N): >> """ >> >>> sum(range(10)) >> 45 >> >>> range_sum(10) >> 45 >> """ >> result = sum(i for i in range(N)) >> return result >> >> 'i' is expected to be integer, but it isn't >> >> So I tried simple example and 'i' is inferred as object: >> >> def bar(int N): >> cdef int result = 0 >> for i in range(N): >> result += i >> return result >> >> So, I'm wondering should it be inferred as int or not? > > It's not because it's used in an arithmetic expression that might > overflow. You can decorate this with @cython.infer_types(True) or use > doubles to get the inference you want. >
Ok. So I guess something changed after inlined genexps was disabled: https://github.com/cython/cython/blob/master/tests/run/inlined_generator_expressions.pyx#L16 This test relies on integer range. I'm also a little bit concerned about MarkAssignments I think it's better to merge it with CreateControlFlow. For instance, type inference doesn't work for comprehensions and will not work for inlined genexprs. -- vitja. _______________________________________________ cython-devel mailing list cython-devel@python.org http://mail.python.org/mailman/listinfo/cython-devel