On Fri Jun 06 20:11:36 2008, particle wrote: (Sorry for spam if any. Looks like my message was rejected by mailman.)
eval() shouldn't throws any exceptions. Correct patch for 'eval()' and Test.pm attached. -- Bacek.
=================================================== --- Test.pm (orig) +++ Test.pm (modified) @@ -123,14 +123,16 @@ multi sub lives_ok($closure) { } multi sub eval_dies_ok($code, $reason) { - proclaim((defined eval_exception($code)), $reason); + eval($code); + proclaim(defined($!), $reason); } multi sub eval_dies_ok($code) { eval_dies_ok($code, ''); } multi sub eval_lives_ok($code, $reason) { - proclaim((not defined eval_exception($code)), $reason); + eval($code); + proclaim((not defined $!), $reason); } multi sub eval_lives_ok($code) { eval_lives_ok($code, ''); @@ -139,12 +141,6 @@ multi sub eval_lives_ok($code) { ## 'private' subs -sub eval_exception($code) { - my $eval_exception; - try { eval ($code); $eval_exception = $! } - $eval_exception // $!; -} - sub proclaim($cond, $desc) { $testing_started = 1; $num_of_tests_run = $num_of_tests_run + 1; =================================================== --- src/builtins/control.pir (orig) +++ src/builtins/control.pir (modified) @@ -113,13 +113,12 @@ on error. unless have_lang goto no_lang 'die'('Lanuage parameter to eval unimplemented.') no_lang: + push_eh catch .local pmc compiler, invokable .local pmc res, exception compiler = compreg 'Perl6' invokable = compiler.'compile'(code) - - push_eh catch res = invokable() pop_eh exception = new 'Failure'