From 494f30b5911a20353086e7121cceeab38a186df5 Mon Sep 17 00:00:00 2001 From: Lisandro Dalcin Date: Fri, 14 Nov 2008 20:48:45 -0300 Subject: [PATCH] array size could be expressions with known C compile-time values --- Cython/Compiler/PyrexTypes.py | 1 - tests/run/carrays.pyx | 23 +++++++++++++++++++++-- 2 files changed, 21 insertions(+), 3 deletions(-) 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) -- 2.26.2