import Builtin
import Symtab
import Options
+ from Cython import Utils
from Annotate import AnnotationItem
+from Cython import Utils
from Cython.Debugging import print_call_chain
from DebugFlags import debug_disposal_code, debug_temp_alloc, \
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:
+class PyObjectTypeInferer(object):
"""
If it's not declared, it's a PyObject.
"""