On 2 February 2012 12:19, Dag Sverre Seljebotn
<d.s.seljeb...@astro.uio.no> wrote:
> I just realized that
>
> cdef int[:] a = None
>
> raises an exception; even though I'd argue that 'a' is of the "reference"
> kind of type where Cython usually allow None (i.e., "cdef MyClass b = None"
> is allowed even if type(None) is NoneType). Is this a bug or not, and is it
> possible to do something about it?
>
> Dag Sverre
> _______________________________________________
> cython-devel mailing list
> cython-devel@python.org
> http://mail.python.org/mailman/listinfo/cython-devel

Yeah I disabled that quite early. It was supposed to be working but
gave a lot of trouble in cases (segfaults, mainly). At the time I was
trying to get rid of all the segfaults and get the basic functionality
working, so I disabled it. Personally, I have never liked how things
can be None unchecked. I personally prefer to write

cdef foo(obj=None):
    cdef int[:] a
    if obj is None:
        obj = ...
    a = obj

Often you forget to write 'not None' when declaring the parameter (and
apparently that it only allowed for 'def' functions).

As such, I never bothered to re-enable it. However, it does support
control flow with uninitialized slices, and will raise an error if it
is uninitialized. Do we want this behaviour (e.g. for consistency)?
_______________________________________________
cython-devel mailing list
cython-devel@python.org
http://mail.python.org/mailman/listinfo/cython-devel

Reply via email to