petdance/scratch — Issue #312: Cannot resume dead coroutine
Author: petdance
Created: 2011-11-01 04:25:40+00:00
State: open

{{{

.sub 'MyCoro'
.yield(1)
.yield(2)
.yield(3)
.return(4)
.end

.sub 'main' :main
$I0 = MyCoro()
say $I0
$I0 = MyCoro()
say $I0
$I0 = MyCoro()
say $I0
$I0 = MyCoro()
say $I0
$I0 = MyCoro()
say $I0
$I0 = MyCoro()
say $I0
$I0 = MyCoro()
say $I0
.end
}}}

prints:

{{{
1
2
3
4
Cannot resume dead coroutine.
current instr.: 'main' pc 35 (coro.pir:11)
}}}

on parrot-2.5.0-devel on Mac OS X 10.5.8.

I think the subroutine should restart, since the user of the sub doesn't care whether it's a coroutine or not.