diff options
author | Paul "LeoNerd" Evans <leonerd@leonerd.org.uk> | 2021-02-10 12:43:14 +0000 |
---|---|---|
committer | Paul "LeoNerd" Evans <leonerd@leonerd.org.uk> | 2021-02-14 13:40:50 +0000 |
commit | 7bf2a704fb5fd949e313411896af9e6e6aef8e44 (patch) | |
tree | 0463de711094ac6a7caa208161f56e0e5b32612d | |
parent | 6b729d2440b795f848f610a8cc410a3f6be6388b (diff) | |
download | perl-7bf2a704fb5fd949e313411896af9e6e6aef8e44.tar.gz |
Unit-test that try{return} within :lvalue sub behaves correctly (GH#18553)
-rw-r--r-- | t/op/try.t | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/t/op/try.t b/t/op/try.t index 90702fe958..fe17a1ff42 100644 --- a/t/op/try.t +++ b/t/op/try.t @@ -195,4 +195,28 @@ no warnings 'experimental::try'; } } +# return from try is correct even for :lvalue subs +# https://github.com/Perl/perl5/issues/18553 +{ + my $scalar; + sub fscalar :lvalue + { + try { return $scalar } + catch ($e) { } + } + + fscalar = 123; + is($scalar, 123, 'try { return } in :lvalue sub in scalar context' ); + + my @array; + sub flist :lvalue + { + try { return @array } + catch ($e) { } + } + + (flist) = (4, 5, 6); + ok(eq_array(\@array, [4, 5, 6]), 'try { return } in :lvalue sub in list context' ); +} + done_testing; |