Vitja Makarov, 09.05.2012 15:16: > 2012/5/9 Vitja Makarov: >>>> On 9 May 2012 13:39, Vitja Makarov wrote: >>>>> 2012/5/9 Vitja Makarov: >>>>>> 2012/5/9 Stefan Behnel: >>>>>>> def test(): >>>>>>> x = 1 # inferred as int >>>>>>> del x # error: Deletion of non-Python, non-C++ object >>>>>>> >>>>>>> http://trac.cython.org/cython_trac/ticket/768 >>>>>>> >>>>>>> It might be enough to infer "object" for names that are being del-ed for >>>>>>> now, and to fix "del" The Right Way when we split entries. >>>>>> >>>>>> Do you mean that `x` should be inferred as "python object" in your >>>>>> example? >>>>>> >>>>>> Yes, we may add workaround for del <unspecified_type> case. >>>>>> Del is represented now by NameDeletion with the same rhs and lhs. >>>>>> >>>>>> We can add method infer_type() to NameAssignment and use it instead of >>>>>> Node.infer_type()
Yes, looks ok. >>>>> Here I've tried to fix it, now deletion always infers as python_object >>>>> >>>>> https://github.com/vitek/cython/commit/225c9c60bed6406db46e87da31596e053056f8b7 >>>>> >>>>> That may break C++ object deletion >> >> Yeah, this code doesn't work now: >> >> cdef extern from "foo.h": >> cdef cppclass Foo: >> Foo() >> >> def foo(): >> foo = new Foo() >> print typeof(foo) >> del foo >> >> And I'm not sure how to fix it. > > I've fixed cppclasses: > > https://github.com/vitek/cython/commit/f5acf44be0f647bdcbb5a23c8bfbceff48f4414e Sure, that makes sense. If the type cannot be del-ed, we'll get an error elsewhere - not a concern of type inference. > About memoryviews: > > from cython cimport typeof > > def foo(float[::1] a): > b = a > #del b > print typeof(b) > print typeof(a) > > In this example `b` is inferred as 'Python object' and not > `float[::1]`, is that correct? I think it currently is, but it may no longer be in the future. See the running ML thread about the future of the buffer syntax and the memoryview syntax. If we're up to changing this, it would be good to give it a suitable behaviour right for the next release, so that users don't start relying on the above. Stefan _______________________________________________ cython-devel mailing list cython-devel@python.org http://mail.python.org/mailman/listinfo/cython-devel