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


Some types provide methods, like .Bool, .elems, .Str that are defined for :D 
subtypes. However,
these methods are defined as `only` methods, not `multi`, so the dispatch for 
:U subtypes fails,
instead of those be handled by Mu.* methods.

I already fixed[^1] a bunch for Baggy role, but I notice other types have 
similar issue:

    <Zoffix> m: Seq.Bool
    <camelia> rakudo-moar dd4dfb: OUTPUT: «Invocant requires an instance of 
type Seq, but a type object was passed.  Did you forget a .new?␤  in block 
<unit> at <tmp> line 1␤␤»

We need to check the codebase for more of these. I think some construct similar 
to `for Any.^methods(:all)».name -> $name { for @all-core-types { ."$name"() }}`
can be used for automated finding of methods that need to be changed to multies.

[1] 
https://github.com/rakudo/rakudo/commit/e8af8553eae9abfe4f5cd02dcf4114c5c4877c51

Reply via email to