]> granicus.if.org Git - python/commitdiff
support true division
authorJeremy Hylton <jeremy@alum.mit.edu>
Mon, 17 Sep 2001 16:41:02 +0000 (16:41 +0000)
committerJeremy Hylton <jeremy@alum.mit.edu>
Mon, 17 Sep 2001 16:41:02 +0000 (16:41 +0000)
Lib/compiler/pycodegen.py
Tools/compiler/compiler/pycodegen.py

index 0097482447c344ffc7c421a0a5192efb2697b322..a019828e9ebb038b5ba290120ded53b05b899a6e 100644 (file)
@@ -161,12 +161,14 @@ class CodeGenerator:
         self.maxStack = 0
         self.last_lineno = None
         self._setupGraphDelegation()
+        self._div_op = "BINARY_DIVIDE"
 
         # XXX set flags based on future features
         futures = self.get_module().futures
         for feature in futures:
             if feature == "division":
                 self.graph.setFlag(CO_FUTURE_DIVISION)
+                self._div_op = "BINARY_TRUE_DIVIDE"
             elif feature == "generators":
                 self.graph.setFlag(CO_GENERATOR_ALLOWED)
 
@@ -975,7 +977,7 @@ class CodeGenerator:
         return self.binaryOp(node, 'BINARY_MULTIPLY')
 
     def visitDiv(self, node):
-        return self.binaryOp(node, 'BINARY_DIVIDE')
+        return self.binaryOp(node, self._div_op)
 
     def visitFloorDiv(self, node):
         return self.binaryOp(node, 'BINARY_FLOOR_DIVIDE')
index 0097482447c344ffc7c421a0a5192efb2697b322..a019828e9ebb038b5ba290120ded53b05b899a6e 100644 (file)
@@ -161,12 +161,14 @@ class CodeGenerator:
         self.maxStack = 0
         self.last_lineno = None
         self._setupGraphDelegation()
+        self._div_op = "BINARY_DIVIDE"
 
         # XXX set flags based on future features
         futures = self.get_module().futures
         for feature in futures:
             if feature == "division":
                 self.graph.setFlag(CO_FUTURE_DIVISION)
+                self._div_op = "BINARY_TRUE_DIVIDE"
             elif feature == "generators":
                 self.graph.setFlag(CO_GENERATOR_ALLOWED)
 
@@ -975,7 +977,7 @@ class CodeGenerator:
         return self.binaryOp(node, 'BINARY_MULTIPLY')
 
     def visitDiv(self, node):
-        return self.binaryOp(node, 'BINARY_DIVIDE')
+        return self.binaryOp(node, self._div_op)
 
     def visitFloorDiv(self, node):
         return self.binaryOp(node, 'BINARY_FLOOR_DIVIDE')