summaryrefslogtreecommitdiff
path: root/t/op/ref.t
diff options
context:
space:
mode:
Diffstat (limited to 't/op/ref.t')
-rwxr-xr-xt/op/ref.t19
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);