# New Ticket Created by  "Brian S. Julin" 
# Please include the string:  [perl #125769]
# in the subject line of all future correspondence about this issue. 
# <URL: https://rt.perl.org/Ticket/Display.html?id=125769 >



A newly created Failure can be prevented from sinking by assigning
it to a variable.  Binding it to a variable also protects it from
being immediately sunk.  However, when the latter happens as the last
statement in an if { ... }, the exception is sunk and thrown.

Expected behavior: The "bar" failure below should not throw.

$ cat /tmp/foo.pm6
sub a {
    if (1) {
        my $f = Failure.new("foo");
    }
    return 1;
}
my $a = a();

sub b {
    if (1) {
        my $f := Failure.new("bar");
    }
    return 1;
}
my $b = b();
42.say

$ perl6 /tmp/foo.pm6
bar
  in sub b at /tmp/foo.pm6:10
  in block <unit> at /tmp/foo.pm6:15

Actually thrown at:
  in sub b at /tmp/foo.pm6:10
  in block <unit> at /tmp/foo.pm6:15

Reply via email to