jerry gay wrote:
would you reformat this in universal diff format please? my patch
program doesn't speak git.
Strange... It is 'universal diff' format. Can be applied with
'patch -p1 < eval.diff' in top-level parrot directory. Or with
'patch -p3 < eval.diff' in languages/perl6.
Anyway, attached patch can be applied within 'patch -p0' in
languages/perl6 directory.
--
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'