Some error tests for c array iteration.
authorRobert Bradshaw <robertwb@math.washington.edu>
Sat, 11 Sep 2010 21:48:32 +0000 (14:48 -0700)
committerRobert Bradshaw <robertwb@math.washington.edu>
Sat, 11 Sep 2010 21:48:32 +0000 (14:48 -0700)
Cython/Compiler/Optimize.py
tests/errors/e_slice.pyx

index 87cf35a94acf51924bcc6cbdd48dc34ac1796eb8..bc0d4b3c131719c5457616fe0b08576db7d5e98d 100644 (file)
@@ -306,7 +306,7 @@ class IterationTransform(Visitor.VisitorTransform):
 
         else:
             if not slice_node.type.is_pyobject:
-                error(slice_node.pos, "Invalid C array iteration")
+                error(slice_node.pos, "C array iteration requires known end index")
             return node
 
         if start:
index 6025cfa987aaead0eb362ff191faf42a2d72b4d1..ead4380fe9f486b9c7bbece7c240d12ab2955762 100644 (file)
@@ -1,10 +1,24 @@
 def f(obj2):
-       cdef int *ptr1
-       obj1 = obj2[ptr1::] # error
-       obj1 = obj2[:ptr1:] # error
-       obj1 = obj2[::ptr1] # error
+    cdef int *ptr1
+    obj1 = obj2[ptr1::] # error
+    obj1 = obj2[:ptr1:] # error
+    obj1 = obj2[::ptr1] # error
+    
+cdef int a
+cdef int* int_ptr
+
+for a in int_ptr:
+    pass
+for a in int_ptr[2:]:
+    pass
+for a in int_ptr[2:2:a]:
+    pass
+    
 _ERRORS = u"""
-3:17: Cannot convert 'int *' to Python object
-4:18: Cannot convert 'int *' to Python object
-5:19: Cannot convert 'int *' to Python object
+3:20: Cannot convert 'int *' to Python object
+4:21: Cannot convert 'int *' to Python object
+5:22: Cannot convert 'int *' to Python object
+10:16: C array iteration requires known end index
+12:16: C array iteration requires known end index
+14:22: C array iteration requires known step size and end index
 """