import Nodes
import Builtin
import PyrexTypes
+from Cython import Utils
from PyrexTypes import py_object_type, unspecified_type
from Visitor import CythonTransform
visit_InPlaceAssignmentNode = visit_dangerous_node
visit_Node = visit_safe_node
-
+
+ def visit_assignment(self, lhs, rhs):
+ if (isinstance(rhs, ExprNodes.IntNode)
+ and isinstance(lhs, ExprNodes.NameNode)
+ and Utils.long_literal(rhs.value)):
+ entry = lhs.entry or self.env.lookup(lhs.name)
+ if entry:
+ entry.might_overflow = True
+
+ def visit_SingleAssignmentNode(self, node):
+ self.visit_assignment(node.lhs, node.rhs)
+ self.visitchildren(node)
+ return node
+
+ def visit_CascadedAssignmentNode(self, node):
+ for lhs in node.lhs_list:
+ self.visit_assignment(lhs, node.rhs)
+ self.visitchildren(node)
+ return node
class PyObjectTypeInferer:
"""