When I match these rules:
p6rule("<LAG::Parser::parenlist> <LAG::Parser::codeblock>",
classname, "attrdef")
p6rule("\( \s* x \s* \)", classname, "parenlist")
p6rule("{ \s* y \s* }", classname, "codeblock")
against this string "(x) { y }", I get the following error:
src/inter_call.c:129: failed assertion `PObj_is_PMC_TEST(sig_pmc)'
Abort trap
When I change the two subrule calls to an inline pattern, the match
fails (as it should), but doesn't give the error.
p6rule("\( \s* x \s* \) { \s* y \s* }", classname, "attrdef")
When I add in whitespace between the two subrules, the rule matches
successfully with no errors:
p6rule("<LAG::Parser::parenlist> \s* <LAG::Parser::codeblock>",
classname, "attrdef")
Any thoughts on the cause of the error? I've run across it several
other times as well, this was just a nice small example. It seems to
always involve a failed match with calls to subrules.
Allison