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


# I have the fix; filing for records

The error message displayed claims I called the method with two  
positonal arguments, rather than one positional and one named:
<ZoffixW> m: class Z { multi method meow {} }.meow: 42, :foo(42)
<camelia> rakudo-moar 6c0732: OUTPUT«Cannot resolve caller meow(Z:  
Int, Int); none of these signatures match:␤    (Z $: *%_)␤  in block  
<unit> at <tmp> line 1␤␤»
<ZoffixW> m: class Z { multi method meow {} }.meow: 42, :foo(Str)
<camelia> rakudo-moar 6c0732: OUTPUT«Cannot resolve caller meow(Z:  
Int, Str); none of these signatures match:␤    (Z $: *%_)␤  in block  
<unit> at <tmp> line 1␤␤»

Works fine for Bools
<ZoffixW> m: class Z { multi method meow {} }.meow: 42, :foo
<camelia> rakudo-moar 6c0732: OUTPUT«Cannot resolve caller meow(Z:  
Int, :foo); none of these signatures match:␤    (Z $: *%_)␤  in block  
<unit> at <tmp> line 1␤␤»

The issue is the string that's supposed to be showing proper named[^1]  
has an interpolation
bug where it thinks we're trying to call the .key, which is Str and  
that fails. BUT, the whole thing
is wrapped in a `try` so the failure is silent and we get into the  
fallback that only gives us the type name. BUT,
that fallback also has a bugglet in that the `:` to indicate it's a  
named param is missing.

[1]  
https://github.com/rakudo/rakudo/blob/1e6c465ce27b457b66c1e92d11c23189cb2c451a/src/core/Exception.pm#L2305

Reply via email to