From: Lisandro Dalcin Date: Fri, 14 Nov 2008 23:48:45 +0000 (-0300) Subject: array size could be expressions with known C compile-time values X-Git-Tag: 0.11-beta~249 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=494f30b5911a20353086e7121cceeab38a186df5;p=cython.git array size could be expressions with known C compile-time values --- diff --git a/Cython/Compiler/PyrexTypes.py b/Cython/Compiler/PyrexTypes.py index 281cf0ad..70330959 100644 --- a/Cython/Compiler/PyrexTypes.py +++ b/Cython/Compiler/PyrexTypes.py @@ -616,7 +616,6 @@ class CArrayType(CType): is_array = 1 def __init__(self, base_type, size): - assert size is None or isinstance(size, int), repr(size) self.base_type = base_type self.size = size if base_type is c_char_type: diff --git a/tests/run/carrays.pyx b/tests/run/carrays.pyx index 3a7e4537..ca6fd072 100644 --- a/tests/run/carrays.pyx +++ b/tests/run/carrays.pyx @@ -1,9 +1,13 @@ __doc__ = """ ->>> test() +>>> test1() 2 +>>> test2() +0 +>>> test3() +(2, 3) """ -def test(): +def test1(): cdef int x[2][2] x[0][0] = 1 x[0][1] = 2 @@ -13,3 +17,18 @@ def test(): cdef int* f(int x[2][2]): return x[0] + + +def test2(): + cdef int a1[5] + cdef int a2[2+3] + return sizeof(a1) - sizeof(a2) + +cdef enum: + MY_SIZE_A = 2 + MY_SIZE_B = 3 + +def test3(): + cdef int a[MY_SIZE_A] + cdef int b[MY_SIZE_B] + return sizeof(a)/sizeof(int), sizeof(b)/sizeof(int)