Will Coleda (via RT) wrote:
# New Ticket Created by Will Coleda
# Please include the string: [perl #59704]
# in the subject line of all future correspondence about this issue.
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=59704 >
sub main :main
$P1 = new 'Integer'
$P1 = 2
$P2 = new 'Integer'
$P2 = 3
$P3 = $P1 ** $P2
$S0 = typeof $P3
say $S0
$P3 = $P1 ** 3
$S0 = typeof $P3
say $S0
end
generates "Float\nInteger", I'm pretty sure that before the MMD merge it
would have been "Integer\nInteger".
I've TODO'd some partcl tests until this is resolved.
The semantics of inherited vtable functions and multiple dispatch
changed in the MMD branch. In the old system, an inherited vtable
function would be completely ignored for the small subset of vtable
functions that commonly multiply dispatch. The new semantics respect
inherited vtable functions.
There was a VTABLE 'pow' in scalar that had previously been ignored in
Integer, but was now being used (it called 'set_number_native' which
morphed the destination to a Float). So, I changed scalar's 'pow' to a
MULTI in r31880, and it works fine.
Allison