On Mon, 19 Dec 2016 11:39:54 -0800, elizabeth wrote: > Fixed with 3fe5893 , tests needed. > > > On 16 Dec 2016, at 22:14, Elizabeth Mattijsen (via RT) <perl6-bugs- > > follo...@perl.org> wrote: > > > > # New Ticket Created by Elizabeth Mattijsen > > # Please include the string: [perl #130363] > > # in the subject line of all future correspondence about this issue. > > # <URL: https://rt.perl.org/Ticket/Display.html?id=130363 > > > > > > > $ 6 'm/./; dd $/' > > No such method 'match' for invocant of type ‘Any' > > > > $ 6 '/./; dd $/' > > Nil $/ = Nil > > > > > > Apparently the codegen of m/./ introduces a call to .match, whereas > > /./ codegens to something that does *not* call .match. I can only > > assume that’ because it assumes there can be named parameters (even > > though we could see that that is not the case). > > > > So fixing the codegen in this case would not solve this problem: > > > > $ 6 'm:2nd/./; dd $/' > > No such method 'match' for invocant of type ‘Any' > > > > > > The only way I see we could fix this, is by adding an Any.match or a > > Mu.match, that would just set $/ to Nil.
I'm 10 months late to the party, but this looks off to me. The commit adds a `.match` method that does nothing to virtually every object. The listed reasoning is that `m/./` codegens differently than `/./` but that's still the case: `/./` constructs a Regex object (and in non-Bool context no match against $_ is done), while `m/./` performs a match with $_, so it wasn't surprising that `m/./` would complain about "no .match on Any", while `/./` didn't. Seems the new behaviour simply hides a bug in user's code, so I'm hesitant to add it as a requirement to the language spec.