Multi dispatch ignores @, % and & type specifiers.
Opened this issue · 0 comments
KamilaBorowska commented
@
enforces Positional
type, %
enforces Associative
type and &
enforces Callable
type. However, those type constaints are ignored when deciding which method should be multi
dispatched to when having more than one such method.
niecza> multi a(@a) { 'array' }
sub a(@a) { ... }
niecza> multi a(%a) { 'hash' }
sub a(%a) { ... }
niecza> multi a(&a) { 'sub' }
sub a(Any &a) { ... }
niecza> a [1, 2, 3]
array
niecza> a {a => 'b'}
hash
niecza> a {say 42}
sub
niecza> multi a($a) { 'scalar' }
sub a(Any $a) { ... }
niecza> a 'abc'
scalar
niecza> a [1, 2, 3]
scalar
niecza> a {a => 'b'}
scalar
niecza> a {say 42}
scalar
niecza>