# New Ticket Created by Timothy Totten # Please include the string: [perl #109500] # in the subject line of all future correspondence about this issue. # <URL: https://rt.perl.org:443/rt3/Ticket/Display.html?id=109500 >
Some infix operators, including at least infix:<->, infix:«<» and infix:<==> seem to fail to dispatch to user-defined versions outside the setting. An example: class Foo {} multi infix:<+> (Foo $a, Numeric $b) { say "Foo went up by $b"; } multi infix:<-> (Foo $a, Numeric $b) { say "Foo went down by $b"; } my $foo = Foo.new; $foo + 1; ## Will output "Foo went up by 1", with no issues. $foo - 1; ## Fails with a fatal error, see below. ------------- The subtraction get's dispatched to multi infix:<->(\$a, \$b) { $a.Numeric - $b.Numeric } which is located in the core setting. It dies with: No applicable candidates found to dispatch to for 'Numeric'. Available candidates are::(Mu:U \$v, Mu %_!) in method Numeric at src/gen/CORE.setting:649 in sub infix:<-> at src/gen/CORE.setting:2233 This indicates that the infix:<-> declared above is not being dispatched to, even though it's more specific than the version from the setting that is. Other infix operators including infix:<+> on the other hand are working fine. This is a very strange bug, and blocks DateTime::Math (and any other libraries using the affected overridden operators) from being ported to the newest Rakudo branch.