back.pysim: fix completely broken codegen for Switch.
This commit is contained in:
parent
6aefd0c04c
commit
bb843cb40c
|
@ -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):
|
||||||
|
|
Loading…
Reference in a new issue