use strict;
use warnings;
-use Test::More tests => 60;
+use Test::More tests => 65;
my %_re = (
bareword => sub { qr/^Bareword\s+['"]?\s*$_[0]\s*['"]?\s+not\s+allowed\s+while\s+["']?\s*strict\s+subs\s*['"]?\s+in\s+use\s+at\s+$_[1]\s+line\s+$_[2]/ },
my $foo;
our @foo;
-my $y = eval {
- foo 1, 2, \%h;
-};
+my $y = eval { foo 1, 2, \%h };
_got_ok('compiling to foo(1,2,\\\%h)');
is($foo, 15, 'foo really was executed');
-eval {
- wut 13, "what"
-};
+eval { wut 13, "what" };
_got_ok('compiling to wut(13,"what")');
is($wut, 17, 'wut really was executed');
}
}
-eval {
- foo 3, 4, { };
-};
+eval { foo 3, 4, { } };
_got_ok('compiling to foo(3,4,{})');
is($foo, 7, 'foo really was executed');
$cb->();
is($b, 'blech', 'bareword ok');
+eval { foo 13, 1, { } };
+_got_ok('compiling to foo(13,1,{})');
+is($foo, 14, 'foo really was executed');
+
$warn = undef;
{
local $SIG{__WARN__} = sub { $warn = $_[0] =~ /Subroutine\s+\S+redefined/; diag $_[0] };
sub yay { @yay = @_; '::yay' }
-{
- use subs::auto;
- eval "no subs::auto; meh";
- _got_bareword("meh", 1, eval => 1);
+# === Restarting from there ===================================================
+use subs::auto;
+
+eval "no subs::auto; meh";
+_got_bareword("meh", 1, eval => 1);
# eval "use subs::auto; meh";
# _got_undefined('meh', 1, eval => 1, todo => 'Fails because of some bug in perl or Variable::Magic');
# eval "meh";
# _got_undefined('meh', 1, eval => 1, todo => 'Fails because of some bug in perl or Variable::Magic');
-}
my $buf = '';
-open DONGS, '>', \$buf or die "open-in-memory: $!";
+{
+ no subs::auto;
+ open DONGS, '>', \$buf or die "open-in-memory: $!";
+}
print DONGS "hlagh\n";
is($buf, "hlagh\n", 'filehandles should\'t be touched');
close DONGS;
+
+eval { foo 7, 9, { } };
+_got_ok('compiling to foo(7,9,{})');
+is($foo, 16, 'foo really was executed');
+
+eval { blech };
+_got_undefined('blech', __LINE__-1);