[perl #114684] [BUG] Return type mismatch should return Failure, not throw exception
On Fri, 31 Aug 2012 12:36:48 -0700, pmichaud wrote: > 19:34 r: sub abc() returns Int { my $r = 3.5; $r }; my > $x = abc(); say 'alive'; > 19:34 rakudo 231137: OUTPUT«Type check failed for return > value; expected 'Int' but got 'Rat' in sub abc at /tmp/P8uacuh4gB:1 > in block at /tmp/P8uacuh4gB:1» Still the same in current Rakudo: This is Rakudo version 2017.08-104-g76f1d8970 built on MoarVM version 2017.08.1-148-g1059eed1 implementing Perl 6.c. Better test-case: ➜ sub abc() returns Int { 3.5 }; say abc.defined; Type check failed for return value; expected Int but got Rat (3.5) Since there has been no update on this, and no-one's complaining about the current behavior, does this mean the ticket should be rejected? (Marking it RFC for now.)
[perl #114684] [BUG] Return type mismatch should return Failure, not throw exception
# New Ticket Created by Patrick R. Michaud # Please include the string: [perl #114684] # in the subject line of all future correspondence about this issue. # URL: https://rt.perl.org:443/rt3/Ticket/Display.html?id=114684 19:34 pmichaud r: sub abc() returns Int { my $r = 3.5; $r }; my $x = abc(); say 'alive'; 19:34 p6eval rakudo 231137: OUTPUT«Type check failed for return value; expected 'Int' but got 'Rat' in sub abc at /tmp/P8uacuh4gB:1 in block at /tmp/P8uacuh4gB:1» According to S02:1363, a return value not matching a constraint should internally call Cfail, which means the above shouldn't die immediately. jnthn++ notes that this may be a deviation from the way type constraints are handled by other parts of the spec; thus the spec may want changing. If so, we can file a spec issue for that; in the meantime I'm filing the rakudobug so it doesn't get forgotten. Pm