# New Ticket Created by Tobias Leich
# Please include the string: [perl #125169]
# in the subject line of all future correspondence about this issue.
# <URL: https://rt.perl.org/Ticket/Display.html?id=125169 >
grammar D { our token doo { doo }; }; say 'doo' ~~ &D::doo
rakudo-moar a6f563: OUTPUT«Type check failed in binding <anon>; expected 'D'
but got 'Cursor' in regex doo at /tmp/8wglQQkyMB:1 in block <unit> at
/tmp/8wglQQkyMB:1»
grammar D { token doo is export { doo }; }; import D; say 'doo' ~~ &doo
rakudo-moar a6f563: OUTPUT«Type check failed in binding <anon>; expected 'D'
but got 'Cursor' in regex doo at /tmp/anZydiSimC:1 in block <unit> at
/tmp/anZydiSimC:1»
It works when we mess with the invocant:
grammar D { our token doo(Mu:) { doo }; }; say 'doo' ~~ &D::doo
rakudo-moar a6f563: OUTPUT«「doo」»
grammar D { token doo(Mu:) is export { doo }; }; import D; say 'doo' ~~ &doo
rakudo-moar a6f563: OUTPUT«「doo」»
grammar D { our token doo(Mu:) { doo }; }; say 'doo' ~~ / <&D::doo> /
rakudo-moar a6f563: OUTPUT«「doo」»
It should work without "restricting" the invocant to Mu.