2012/7/24 Stefan Behnel <stefan...@behnel.de>: > Stefan Behnel, 24.07.2012 12:43: >> Vitja Makarov, 23.07.2012 07:13: >>> Here is part of original testcase: >>> >>> from cython.operator cimport dereference as d >>> from cython.operator cimport preincrement as incr >>> from libcpp.vector cimport vector >>> >>> def reverse_iteration_test(L): >>> v = new vector[int]() >>> for a in L: >>> v.push_back(a) >>> it = v.rbegin() >>> while it != v.rend(): >>> a = d(it) >>> incr(it) >>> print(a) >>> >>> It doesn't work with local type inference enabled since `a` in >>> for-loop is infered as pyobject and in while loop it's inferred as >>> reverse_iterator. >>> >>> Then I tried to comment out for loop and compile it with >>> upstream/master, same error here: >>> >>> note: cpp_stl_vector.pyx:8:6: inferred 'v' to be of type 'vector[int] *' >>> note: cpp_stl_vector.pyx:11:7: inferred 'it' to be of type >>> 'reverse_iterator' >>> note: cpp_stl_vector.pyx:13:10: inferred 'a' to be of type >>> 'reverse_iterator' >>> >>> Error compiling Cython file: >>> ------------------------------------------------------------ >>> ... >>> v = new vector[int]() >>> #for a in L: >>> # v.push_back(a) >>> it = v.rbegin() >>> while it != v.rend(): >>> a = d(it) >>> ^ >>> ------------------------------------------------------------ >>> >>> cpp_stl_vector.pyx:13:13: Cannot assign type 'int &' to 'reverse_iterator' >>> >>> Error compiling Cython file: >>> ------------------------------------------------------------ >>> ... >>> # v.push_back(a) >>> it = v.rbegin() >>> while it != v.rend(): >>> a = d(it) >>> incr(it) >>> print(a) >>> ^ >>> ------------------------------------------------------------ >>> >>> cpp_stl_vector.pyx:15:15: Cannot convert 'reverse_iterator' to Python object >>> >>> >>> I think it's not correct to infer `a` as reverse_iterator because it's >>> not an iterator it's vector's item. >> >> Right. DereferenceNode should implement infer_type(). > > ... and not only DereferenceNode. Pretty much all C++ operators do not > properly implement type inference. I'll take a look. >
Ok, thanks! -- vitja. _______________________________________________ cython-devel mailing list cython-devel@python.org http://mail.python.org/mailman/listinfo/cython-devel