use Test::More tests => 7 + 6 + 3 + 1 + 6 + 1 + (("$]" >= 5.010) ? 2 : 0) + 1;
-use Scalar::Util qw<set_prototype>;
+use Scalar::Util;
use Sub::Prototype::Util qw<wrap>;
sub exception {
like $@, exception('Optional arguments'),
'recall takes options in a key => value list';
-my $push_exp = '{ CORE::push(@{$_[0]}, @_[1..$#_]) }';
+my $push_exp = "$]" >= 5.013_007 ? '{ CORE::push($_[0], @_[1..$#_]) }'
+ : '{ CORE::push(@{$_[0]}, @_[1..$#_]) }';
my $push = wrap 'CORE::push', compile => 0;
is($push, 'sub ' . $push_exp, 'wrap push as a sub (default)');
$push = wrap 'CORE::push', sub => 1, compile => 0;
sub myit { my $ar = shift; push @$ar, @_; };
if ("$]" >= 5.010) {
- set_prototype \&myit, '\@$_';
+ Scalar::Util::set_prototype(\&myit, '\@$_');
my $it = wrap 'main::myit';
my @a = qw<u v w>;
local $_ = 7;
is_deeply(\@a, [ qw<u v w>, 3, 4, 6, 7 ], '_ without arguments');
}
-eval { wrap { 'main::dummy' => '\[@%]' }, ref => 'shift' };
-like $@,
- qr/to\s+shift\s+must\s+be\s+array +\([\w ]+\) +at\s+\Q$0\E\s+line\s+\d+/,
+sub myshift (;\@) { shift @{$_[0]} }
+
+eval { wrap { 'main::dummy' => '\[@%]' }, ref => 'main::myshift' };
+like $@, qr/to main::myshift must be array \([\w ]+\) at \Q$0\E line \d+/,
'invalid eval code croaks';