[perl #114684] [BUG] Return type mismatch should return Failure, not throw exception

2017-09-10 Thread Sam S. via RT
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

2012-08-31 Thread via RT
# 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