masak (>):
> <masak> rakudo: class A { method foo { say "A" } }; class B is A {
> method foo { say "B"; nextsame } }; B.new.foo
> <p6eval> rakudo 142d22: OUTPUT«B␤A␤»
> <masak> rakudo: class A { method foo { say "A" } }; class B is A {
> method foo { say "B"; nextsame } }; my &x = B.WALK(:name<foo>)[0];
> &x.wrap: { say "wrap"; nextsame }; x(B.new)
> <p6eval> rakudo 142d22: OUTPUT«wrap␤B␤»
> * masak submits rakudobug
> <masak> why doesn't the last evaluation print "wrap␤B␤A␤"?

<jnthn> masak: hmm
<jnthn> masak: I can kinda see why it's happening.
<jnthn> masak: It feels wrong.
<masak> what feels wrong?
<jnthn> That wrapping it breaks the deferal up the MRO
<masak> jnthn: yes -- that's the title of my bug report :)
<jnthn> masak: To make it work, the current candidate list kinda needs to get 
"collected" or 
something.
<jnthn> When it gets to the ponit of being fully iterated.
<jnthn> So we fall to the otuer dispatcher's idea of current candidate list.
<masak> jnthn: ok.
<jnthn> e.g. empty = implicit pop
* masak adds all this to the ticket
<masak> conceptually, I don't see any problem.
<jnthn> No, I don't have an immediate example of a problem we'd cause or some 
extra fragility 
it'd introduce.
<jnthn> Tend to be a little knee-jerky against implicit magic, that's all. :-)

Reply via email to