back.pysim: fix completely broken codegen for Switch.

This commit is contained in:
whitequark 2018-12-14 08:51:36 +00:00
parent 6aefd0c04c
commit bb843cb40c

View file

@ -169,14 +169,15 @@ class _StatementCompiler(StatementTransformer):
mask = "1" * len(value)
mask = int(mask, 2)
value = int(value, 2)
cases.append((lambda test: test & mask == value,
self.on_statements(stmts)))
def make_test(mask, value):
return lambda test: test & mask == value
cases.append((make_test(mask, value), self.on_statements(stmts)))
def run(state):
test_value = test(state)
for check, body in cases:
if check(test_value):
body(state)
return
return
return run
def on_statements(self, stmts):