# New Ticket Created by Sam S. # Please include the string: [perl #125518] # in the subject line of all future correspondence about this issue. # <URL: https://rt.perl.org/Ticket/Display.html?id=125518 >
Some of the methods of the Grammar class (such as FAILGOAL and !cursor_pos) are exposed to Perl 6 code as NQPRoutine objects, which throw LTA exceptions when introspected in the usual Perl 6 ways: ➜ my $method = Grammar.^methods.first(*.name eq "!cursor_pos"); cannot stringify this ➜ say $method.name; FAILGOAL ➜ say $method ~~ Regex; Invocant requires a 'Failure' instance, but a type object was passed. Did you forget a .new? ➜ say $method.WHAT; Method 'gist' not found for invocant of class 'NQPRoutine' ➜ say $method.WHAT.^name; NQPRoutine This is a regression which caused the Grammar::Debugger module to break, because its overloaded Grammar.find_method($obj, $name) does a $meth ~~ Regex check. (It now checks against $method.WHAT.^name first as a workaround.) IRC comments: <jnthn> Yeah, that's the issue...the NQP object is sneaking into Perl 6 land. <jnthn> We'd kinda like the introspection to work out there <jnthn> they should in theory get exposed as a ForeignRoutine or so