use strict;
use warnings;
-use Test::More tests => 56 * 4;
+use Test::More tests => 101 * 8;
+
+BEGIN { delete $ENV{PERL_INDIRECT_PM_DISABLE} }
my ($obj, $pkg, $cb, $x, @a);
-our $y;
+our ($y, $meth);
sub meh;
-sub try (&);
+sub zap (&);
+
+my @warns;
+
+sub try {
+ my ($code) = @_;
+
+ @warns = ();
+ {
+ local $SIG{__WARN__} = sub { push @warns, @_ };
+ eval $code;
+ }
+}
{
local $/ = "####";
SKIP:
{
- skip "$_: $skip" => 4 if eval $skip;
-
- local $SIG{__WARN__} = sub { die 'warn:' . join(' ', @_) };
+ skip "$_: $skip" => 8 if eval $skip;
- eval "die qq{ok\\n}; $prefix; use indirect; $_";
- is($@, "ok\n", "use indirect: $_");
+ {
+ try "return; $prefix; use indirect; $_";
+ is $@, '', "use indirect: $_";
+ is @warns, 0, 'no reports';
- eval "die qq{ok\n}; $prefix; no indirect; $_";
- is($@, "ok\n", "no indirect: $_");
+ try "return; $prefix; no indirect; $_";
+ is $@, '', "no indirect: $_";
+ is @warns, 0, 'no reports';
+ }
- s/Hlagh/Dongs/g;
+ {
+ local $_ = $_;
+ s/Hlagh/Dongs/g;
- eval "die qq{ok\\n}; $prefix; use indirect; $_";
- is($@, "ok\n", "use indirect, defined: $_");
+ try "return; $prefix; use indirect; $_";
+ is $@, '', "use indirect, defined: $_";
+ is @warns, 0, 'no reports';
- eval "die qq{ok\\n}; $prefix; no indirect; $_";
- is($@, "ok\n", "no indirect, defined: $_");
+ try "return; $prefix; no indirect; $_";
+ is $@, '', "no indirect, defined: $_";
+ is @warns, 0, 'no reports';
+ }
}
}
}
####
$obj = Hlagh->$cb(sub { 'foo' }, bar => $obj);
####
+$obj = Hlagh->$meth;
+####
+$obj = Hlagh
+ ->
+ $meth ( 1, 2 );
+####
$obj = $pkg->new ;
####
$obj = $pkg -> new ( );
####
$obj = $pkg->$cb( $obj );
####
-$obj = $pkg->$cb(qw/foo bar baz/);
+$obj = $pkg->$cb(qw<foo bar baz>);
+####
+$obj = $pkg->$meth;
+####
+$obj
+ =
+ $pkg
+ ->
+ $meth
+ ( 1 .. 10 );
+####
+$obj = $y->$cb;
+####
+$obj = $y
+ -> $cb (
+ 'foo', 1, 2, 'bar'
+);
+####
+$obj = $y->$meth;
+####
+$obj =
+ $y->
+ $meth (
+ qr(hello),
+);
####
meh;
####
meh $y;
####
meh $y, 1, 2;
-#### $] < 5.010 # use feature 'state'; state $z
+#### "$]" < 5.010 # use feature 'state'; state $z
meh $z;
-#### $] < 5.010 # use feature 'state'; state $z
+#### "$]" < 5.010 # use feature 'state'; state $z
meh $z, 1, 2;
####
print;
print $y;
####
print $y "dongs\n";
-#### $] < 5.010 # use feature 'state'; state $z
+#### "$]" < 5.010 # use feature 'state'; state $z
print $z;
-#### $] < 5.010 # use feature 'state'; state $z
+#### "$]" < 5.010 # use feature 'state'; state $z
print $z "hlagh\n";
####
print STDOUT "bananananananana\n";
####
$x->foo($pkg->$cb)
####
-$obj = "apple ${\(new Hlagh)} pear"
+$obj = "apple ${\($x->new)} pear"
+####
+$obj = "apple @{[$x->new]} pear"
+####
+$obj = "apple ${\($y->new)} pear"
+####
+$obj = "apple @{[$y->new]} pear"
+####
+$obj = "apple ${\($x->$cb)} pear"
+####
+$obj = "apple @{[$x->$cb]} pear"
+####
+$obj = "apple ${\($y->$cb)} pear"
+####
+$obj = "apple @{[$y->$cb]} pear"
+####
+$obj = "apple ${\($x->$meth)} pear"
+####
+$obj = "apple @{[$x->$meth]} pear"
+####
+$obj = "apple ${\($y->$meth)} pear"
+####
+$obj = "apple @{[$y->$meth]} pear"
+#### # local $_ = "foo";
+s/foo/return; Hlagh->new/e;
+#### # local $_ = "bar";
+s/foo/return; Hlagh->new/e;
+#### # local $_ = "foo";
+s/foo/return; Hlagh->$cb/e;
+#### # local $_ = "bar";
+s/foo/return; Hlagh->$cb/e;
+#### # local $_ = "foo";
+s/foo/return; Hlagh->$meth/e;
+#### # local $_ = "bar";
+s/foo/return; Hlagh->$meth/e;
+#### # local $_ = "foo";
+s/foo/return; $x->new/e;
+#### # local $_ = "bar";
+s/foo/return; $x->new/e;
+#### # local $_ = "foo";
+s/foo/return; $x->$cb/e;
+#### # local $_ = "bar";
+s/foo/return; $x->$cb/e;
+#### # local $_ = "foo";
+s/foo/return; $x->$meth/e;
+#### # local $_ = "bar";
+s/foo/return; $x->$meth/e;
+#### # local $_ = "foo";
+s/foo/return; $y->new/e;
+#### # local $_ = "bar";
+s/foo/return; $y->new/e;
+#### # local $_ = "foo";
+s/foo/return; $y->$cb/e;
+#### # local $_ = "bar";
+s/foo/return; $y->$cb/e;
+#### # local $_ = "foo";
+s/foo/return; $y->$meth/e;
+#### # local $_ = "bar";
+s/foo/return; $y->$meth/e;
+####
+"foo" =~ /(?{Hlagh->new})/;
+####
+"foo" =~ /(?{Hlagh->$cb})/;
+####
+"foo" =~ /(?{Hlagh->$meth})/;
+####
+"foo" =~ /(?{$x->new})/;
+####
+"foo" =~ /(?{$x->$cb})/;
+####
+"foo" =~ /(?{$x->$meth})/;
+####
+"foo" =~ /(?{$y->new})/;
+####
+"foo" =~ /(?{$y->$cb})/;
####
-$obj = "apple @{[new Hlagh]} pear"
+"foo" =~ /(?{$y->$meth})/;
####
exec $x $x, @a;
####
####
system { $a[0] } @a;
####
-try { };
+zap { };
####
-try { 1; };
+zap { 1; };
####
-try { 1; 1; };
+zap { 1; 1; };
####
-try { try { }; 1; };
+zap { zap { }; 1; };