Hi,

the attached test fails. It raises an exception in __init; if it is resumed 
parrot exists after leaving __init.

jens
use strict;

use Parrot::Test tests => 1;

output_is(<<'CODE', <<'OUTPUT', "exceptions and different runloops");
_main:
    newsub P0, .Exception_Handler, _eh
    set_eh P0
    
    newclass P0, "Foo"
    
    newsub P0, .Sub, __init
    store_global "Foo", "__init", P0
    
    print "new\n"
    find_type I0, "Foo"
    new P2, I0
    print "back in main\n"
    end
    
_eh:
    print "eh!\n"
    set P0, P5["_invoke_cc"]
    invoke P0

__init:
    set P10, P1
    print "in __init\n"
    
    # raise an exception
    set S0, "qux"
    callmethod
    
    print "back in __init\n"
    invoke P10
CODE
new
in __init
eh!
back in __init #1
back in main
OUTPUT

Reply via email to