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 = "1" * len(value)
mask = int(mask, 2) mask = int(mask, 2)
value = int(value, 2) value = int(value, 2)
cases.append((lambda test: test & mask == value, def make_test(mask, value):
self.on_statements(stmts))) return lambda test: test & mask == value
cases.append((make_test(mask, value), self.on_statements(stmts)))
def run(state): def run(state):
test_value = test(state) test_value = test(state)
for check, body in cases: for check, body in cases:
if check(test_value): if check(test_value):
body(state) body(state)
return return
return run return run
def on_statements(self, stmts): def on_statements(self, stmts):