#!/usr/bin/perl use strict; use warnings; use Test::More; # Skip the test before Method::Signatures can try to compile it and blow up. BEGIN { plan skip_all => "Perl 5.10 or higher required to test where constraints" if $] < 5.010; } use Method::Signatures; subtest "when {}" => sub { func empty_hash( HashRef[Int] $ref = { foo => 23, bar => 42 } when {} ) { return $ref; } is_deeply empty_hash(), { foo => 23, bar => 42 }; is_deeply empty_hash({}), { foo => 23, bar => 42 }; is_deeply empty_hash({ this => 23 }), { this => 23 }; }; subtest "when []" => sub { func empty_array( ArrayRef[Int] $ref = [1,2,3] when [] ) { return $ref; } is_deeply empty_array(), [1,2,3]; is_deeply empty_array([]), [1,2,3]; is_deeply empty_array([4,5,6]), [4,5,6]; }; done_testing;