Added warning about infinite loops in for-from-by statement.
authorRobert Bradshaw <robertwb@math.washington.edu>
Fri, 4 May 2007 20:05:53 +0000 (13:05 -0700)
committerRobert Bradshaw <robertwb@math.washington.edu>
Fri, 4 May 2007 20:05:53 +0000 (13:05 -0700)
One rarely, if ever, wants the [step] argument to be negative.

Cython/Compiler/Nodes.py

index 6947fb85454b2e2f224356ac58a31fefe9bc61a9..ebbe9f3c9df746e6581e7a899c458f4290af6fbe 100644 (file)
@@ -5,7 +5,7 @@
 import os, string, sys, time
 
 import Code
-from Errors import error, InternalError
+from Errors import error, warning, InternalError
 import Naming
 import PyrexTypes
 from PyrexTypes import py_object_type, error_type, CTypedefType
@@ -3320,6 +3320,8 @@ class ForFromStatNode(StatNode):
         self.bound1 = self.bound1.coerce_to_integer(env)
         self.bound2 = self.bound2.coerce_to_integer(env)
         if self.step is not None:
+            if isinstance(self.step, ExprNodes.UnaryMinusNode):
+                warning(self.step.pos, "Probable infinite loop in for-from-by statment. Consider switching the directions of the relations.", 2)
             self.step.analyse_types(env)
             self.step = self.step.coerce_to_integer(env)
         if not (self.bound2.is_name or self.bound2.is_literal):