Commit e48bc77a authored by Robert Bradshaw's avatar Robert Bradshaw

Fix ticket #72, (compiler crash on bad code)

parent 5cb0fd35
...@@ -39,12 +39,12 @@ class SwitchTransform(Visitor.VisitorTransform): ...@@ -39,12 +39,12 @@ class SwitchTransform(Visitor.VisitorTransform):
if is_common_value(cond.operand1, cond.operand1): if is_common_value(cond.operand1, cond.operand1):
if isinstance(cond.operand2, ExprNodes.ConstNode): if isinstance(cond.operand2, ExprNodes.ConstNode):
return cond.operand1, [cond.operand2] return cond.operand1, [cond.operand2]
elif hasattr(cond.operand2, 'entry') and cond.operand2.entry.is_const: elif hasattr(cond.operand2, 'entry') and cond.operand2.entry and cond.operand2.entry.is_const:
return cond.operand1, [cond.operand2] return cond.operand1, [cond.operand2]
if is_common_value(cond.operand2, cond.operand2): if is_common_value(cond.operand2, cond.operand2):
if isinstance(cond.operand1, ExprNodes.ConstNode): if isinstance(cond.operand1, ExprNodes.ConstNode):
return cond.operand2, [cond.operand1] return cond.operand2, [cond.operand1]
elif hasattr(cond.operand1, 'entry') and cond.operand1.entry.is_const: elif hasattr(cond.operand1, 'entry') and cond.operand1.entry and cond.operand1.entry.is_const:
return cond.operand2, [cond.operand1] return cond.operand2, [cond.operand1]
elif (isinstance(cond, ExprNodes.BoolBinopNode) elif (isinstance(cond, ExprNodes.BoolBinopNode)
and cond.operator == 'or'): and cond.operator == 'or'):
......
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