From 44a8c73d43d573c2f5c7effd7aa22d530cb58b9c Mon Sep 17 00:00:00 2001 From: Robert Bradshaw Date: Tue, 15 Jul 2008 21:31:18 -0700 Subject: [PATCH] Minor fix for switch node. --- Cython/Compiler/Optimize.py | 2 ++ tests/run/switch.pyx | 20 ++++++++++---------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/Cython/Compiler/Optimize.py b/Cython/Compiler/Optimize.py index 77a26a82..ae4dbcc9 100644 --- a/Cython/Compiler/Optimize.py +++ b/Cython/Compiler/Optimize.py @@ -71,6 +71,8 @@ class SwitchTransform(Visitor.VisitorTransform): cases.append(Nodes.SwitchCaseNode(pos = if_clause.pos, conditions = conditions, body = if_clause.body)) + + common_var = unwrap_node(common_var) return Nodes.SwitchStatNode(pos = node.pos, test = common_var, cases = cases, diff --git a/tests/run/switch.pyx b/tests/run/switch.pyx index da574517..da5bed14 100644 --- a/tests/run/switch.pyx +++ b/tests/run/switch.pyx @@ -25,9 +25,9 @@ __doc__ = u""" >>> switch_py(8) 4 >>> switch_py(10) -7 +10 >>> switch_py(12) -8 +12 >>> switch_py(13) 0 @@ -57,9 +57,9 @@ __doc__ = u""" >>> switch_c(8) 4 >>> switch_c(10) -7 +10 >>> switch_c(12) -8 +12 >>> switch_c(13) 0 """ @@ -86,10 +86,10 @@ def switch_py(x): return 3 elif x in [4,5,7,8]: return 4 - elif x in (10,11): # doesn't work: (7,8,10,11) - return 7 + elif x in (10,11): + return 10 elif x in (12,): - return 8 + return 12 else: return 0 return -1 @@ -116,10 +116,10 @@ def switch_c(int x): return 3 elif x in [4,5,7,8]: return 4 - elif x in (10,11): # doesn't work: (7,8,10,11) - return 7 + elif x in (10,11): + return 10 elif x in (12,): - return 8 + return 12 else: return 0 return -1 -- 2.26.2