def make_redo(label, level, word1, word2): if isinstance(label, Var): control_type = '' if not isinstance(word1, Var): control_type = word1 if not isinstance(word2, Var): control_type += ' '+ word2 if isinstance(level, Var): level = 1 label = label_stack_dict[control_type][-level] return continue_block(label)
def test_unwind_protect_loop(self): eq_(eval(let([(i,3)], block(a, set(i, sub(i, 1)), if_(eq(i, 0), exit_block(a, 1)), unwind_protect(continue_block(a), prin(2))), i)), 0)
def testloop(self): eq_(eval(let([(i,3)], block(a, set(i, sub(i, 1)), if_(eq(i, 0), exit_block(a, 1)), continue_block(a)), i)), 0)
def test_loop2(self): eq_(tag_loop_label(LoopForm((1, next(), 2))), block("$1", 1, continue_block("$1"), 2, continue_block("$1")))
def test_loop1(self): eq_(tag_loop_label(LoopForm((1, 2, exit()))), block("$1", 1, 2, exit_block("$1"), continue_block("$1")))