Skip to content

Commit 1c1903f

Browse files
committed
refact: Put const on the right side for commutative BINARY nodes
1 parent ec1f760 commit 1c1903f

1 file changed

Lines changed: 4 additions & 19 deletions

File tree

src/api/optimize.py

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,10 @@ def visit_ADDRESS(self, node):
221221

222222
def visit_BINARY(self, node: symbols.BINARY):
223223
if self.O_LEVEL > 1 and node.operator in ("PLUS", "MUL"):
224+
if chk.is_number(node.left) and not chk.is_number(node.right):
225+
node.left, node.right = node.right, node.left
226+
node = yield self.generic_visit(node)
227+
224228
if node.left.token == "BINARY" and node.left.operator == node.operator and chk.is_number(node.right):
225229
left = ll = None
226230
if chk.is_number(node.left.right):
@@ -240,25 +244,6 @@ def visit_BINARY(self, node: symbols.BINARY):
240244
)
241245
node.left = left
242246
node.right = right
243-
elif node.right.token == "BINARY" and node.right.operator == node.operator and chk.is_number(node.left):
244-
right = rr = None
245-
if chk.is_number(node.right.left):
246-
right = node.right.right
247-
rr = node.right.left
248-
elif chk.is_number(node.right.right):
249-
right = node.right.left
250-
rr = node.right.right
251-
252-
if right is not None:
253-
left = yield symbols.BINARY.make_node(
254-
operator=node.operator,
255-
left=node.left,
256-
right=rr,
257-
lineno=node.lineno,
258-
func=node.func,
259-
)
260-
node.left = left
261-
node.right = right
262247

263248
node = yield self.generic_visit(node) # This might convert consts to numbers if possible
264249
# Retry folding

0 commit comments

Comments
 (0)