From 371b3568be7a9f1dd94bb03f522ce22d2989ae33 Mon Sep 17 00:00:00 2001 From: Stefan Behnel Date: Sun, 1 Dec 2013 16:10:01 +0100 Subject: [PATCH] strip mult-factor from empty list literals --- Cython/Compiler/Optimize.py | 4 ++-- tests/run/constant_folding.py | 11 +++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/Cython/Compiler/Optimize.py b/Cython/Compiler/Optimize.py index 8880d27..95893f1 100644 --- a/Cython/Compiler/Optimize.py +++ b/Cython/Compiler/Optimize.py @@ -3269,7 +3269,7 @@ class ConstantFolding(Visitor.VisitorTransform, SkipDeclarations): sequence_node = node.operand1 factor = node.operand2 self._calculate_const(factor) - if factor.constant_result != 1: + if factor.constant_result != 1 and sequence_node.args: sequence_node.mult_factor = factor self.visitchildren(sequence_node) return sequence_node @@ -3278,7 +3278,7 @@ class ConstantFolding(Visitor.VisitorTransform, SkipDeclarations): sequence_node = node.operand2 factor = node.operand1 self._calculate_const(factor) - if factor.constant_result != 1: + if factor.constant_result != 1 and sequence_node.args: sequence_node.mult_factor = factor self.visitchildren(sequence_node) return sequence_node diff --git a/tests/run/constant_folding.py b/tests/run/constant_folding.py index 25cbbe1..0f2a136 100644 --- a/tests/run/constant_folding.py +++ b/tests/run/constant_folding.py @@ -278,3 +278,14 @@ def for_in_nested_listcomp(): [] """ return [x for x in [1, 2, 3] for _ in []] + + +@cython.test_fail_if_path_exists( + "//ListNode//IntNode", +) +def mult_empty_list(): + """ + >>> mult_empty_list() + [] + """ + return 5 * [] * 100 -- 2.7.4