Raku / old-issue-tracker

Tickets from RT
https://github.com/Raku/old-issue-tracker/issues
2 stars 1 forks source link

Return type mismatch should return Failure, not throw exception #2880

Open p6rt opened 11 years ago

p6rt commented 11 years ago

Migrated from rt.perl.org#114684 (status was 'open')

Searchable as RT114684$

p6rt commented 11 years ago

From @pmichaud

  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␤␤»

According to S02​:1363, a return value not matching a constraint should internally call C\, 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

p6rt commented 6 years ago

From @smls

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.)

p6rt commented 6 years ago

The RT System itself - Status changed from 'new' to 'open'