X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Fop%2Fref.t;h=81a6543c346aca5fc428313ad16a9c955d5b4ee8;hb=9a9798c21b8a0b65f8e87f35074ebb595dc00f1c;hp=53f3facac5cb391ba15e8eebc5fc934d3d23c8db;hpb=512d1826fd68dfaa1c1d14e56029c984b9ee7eca;p=p5sagit%2Fp5-mst-13.2.git diff --git a/t/op/ref.t b/t/op/ref.t index 53f3fac..81a6543 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);