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«BA» > <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«wrapB» > * masak submits rakudobug > <masak> why doesn't the last evaluation print "wrapBA"?
<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. :-)