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


The error is made when the programmer assumes method declarations without a 
signature mean any arguments are valid and not a (). This would be common with 
Perl 5 programmers, I can imagine.

Moreover, whe error that is shown when a call to such a method is made says it 
received 1 more argument than what the user provided, and it's not obvious that 
the one extra is the invocant.

In constrast, doing the same thing with plain subroutines shows a much clearer 
and more informative error message.


<Zoffix> m: class Foo { method bar {say "uhum"} }; Foo.new.bar: 42;
<camelia> rakudo-moar 4bb47d: OUTPUT«Too many positionals passed; expected 1 
argument but got 2␤  in method bar at /tmp/fub1N6RN3q line 1␤  in block <unit> 
at /tmp/fub1N6RN3q line 1␤␤»
<Zoffix> m: sub bar { say "uhum" }; bar 42
<camelia> rakudo-moar 4bb47d: OUTPUT«===SORRY!=== Error while compiling 
/tmp/V0xL_4prhM␤Calling bar(Int) will never work with declared signature ()␤at 
/tmp/V0xL_4prhM:1␤------> sub bar { say "uhum" }; ⏏bar 42␤»

Reply via email to