diff options
Diffstat (limited to 't/op/ref.t')
-rwxr-xr-x | t/op/ref.t | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/t/op/ref.t b/t/op/ref.t index 53f3facac5..81a6543c34 100755 --- a/t/op/ref.t +++ b/t/op/ref.t @@ -8,7 +8,7 @@ BEGIN { require 'test.pl'; use strict qw(refs subs); -plan (89); +plan (96); # Test glob operations. @@ -425,6 +425,23 @@ TODO: { 'Accessing via a different NUL-containing name gives nothing'); } +# test derefs after list slice + +is ( ({foo => "bar"})[0]{foo}, "bar", 'hash deref from list slice w/o ->' ); +is ( ({foo => "bar"})[0]->{foo}, "bar", 'hash deref from list slice w/ ->' ); +is ( ([qw/foo bar/])[0][1], "bar", 'array deref from list slice w/o ->' ); +is ( ([qw/foo bar/])[0]->[1], "bar", 'array deref from list slice w/ ->' ); +is ( (sub {"bar"})[0](), "bar", 'code deref from list slice w/o ->' ); +is ( (sub {"bar"})[0]->(), "bar", 'code deref from list slice w/ ->' ); + +# deref on empty list shouldn't autovivify +{ + local $@; + eval { ()[0]{foo} }; + like ( "$@", "Can't use an undefined value as a HASH reference", + "deref of undef from list slice fails" ); +} + # Bit of a hack to make test.pl happy. There are 3 more tests after it leaves. $test = curr_test(); curr_test($test + 3); |