use strict; use Parrot::Test tests => 1; output_is(<<'CODE', <<'OUTPUT', "use a continuation to go down the callchain"); ##PIR## .sub _main .local int a .local int b .local int c a = 1 b = 2 c = 3 _func() print "123=" print a print b print c print "\n" end .end .sub _func .local pmc conti .local int a .local int b .local int c a = 4 b = 5 c = 6 newsub conti, .Continuation, _end _do_something( conti ) _end: print "456=" print a print b print c print "\n" .pcc_begin_return .pcc_end_return .end .sub _do_something .param pmc conti .local int a .local int b .local int c a = 7 b = 8 c = 9 invoke conti print "error!\n" print "789=" print a print b print c print "\n" .pcc_begin_return .pcc_end_return .end CODE 456=456 123=123 OUTPUT