Commit db0458d5 authored by Robert Bradshaw's avatar Robert Bradshaw

Fix large integer literal inference.

parent 1cfad096
...@@ -3,6 +3,7 @@ import ExprNodes ...@@ -3,6 +3,7 @@ import ExprNodes
import Nodes import Nodes
import Builtin import Builtin
import PyrexTypes import PyrexTypes
from Cython import Utils
from PyrexTypes import py_object_type, unspecified_type from PyrexTypes import py_object_type, unspecified_type
from Visitor import CythonTransform from Visitor import CythonTransform
...@@ -175,7 +176,25 @@ class MarkOverflowingArithmetic(CythonTransform): ...@@ -175,7 +176,25 @@ class MarkOverflowingArithmetic(CythonTransform):
visit_InPlaceAssignmentNode = visit_dangerous_node visit_InPlaceAssignmentNode = visit_dangerous_node
visit_Node = visit_safe_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:
""" """
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment