2 use warnings FATAL => 'all';
3 use Test::More qw(no_plan);
4 use Scalar::Util qw(weaken);
10 sub new { bless({}, shift) }
17 is_deeply($foo->foo(1), [ $foo, 1 ], 'Direct object call');
18 is_deeply($foo->curry::foo->(1), [ $foo, 1 ], 'Curried object call');
20 weaken(my $weak_foo = $foo);
22 my $curry = $foo->curry::foo;
26 ok($weak_foo, 'Weakened object kept alive by curry');
30 ok(!$weak_foo, 'Weakened object dead');
34 $curry = $foo->curry::weak::foo;
36 is_deeply($curry->(1), [ $foo, 1 ], 'Curried weak object call');
38 weaken($weak_foo = $foo);
42 ok(!$weak_foo, 'Weak curry does not keep object alive');
44 is($curry->(1), undef, 'Weak curry returns undef after object is dead');