Skip to content

Instantly share code, notes, and snippets.

@alabamenhu
Last active April 8, 2020 21:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alabamenhu/2908fa5820b55284c548bff49f32edb8 to your computer and use it in GitHub Desktop.
Save alabamenhu/2908fa5820b55284c548bff49f32edb8 to your computer and use it in GitHub Desktop.
Slang test
sub EXPORT(|) {
my role SlangTest {
# This is a direct copy of the regular 'token' token
token regex_declarator:sym<footoken> {
<sym><.kok>
:my %*RX;
:my $*INTERPOLATE := 1;
:my $*METHODTYPE := 'token';
:my $*IN_DECL := 'token';
:my $*LINE_NO := HLL::Compiler.lineof(self.orig(), self.from(), :cache(1));
{
%*RX<r> := 1;
}
<regex_def>
}
# This is a quick check that the slang is exported correctly
token identifier {
<.ident> [ [ <.apostrophe> | <[₀₁₂₃₄₅₆₇₈₉]>+ ] <.ident> ]* <[₀₁₂₃₄₅₆₇₈₉]>*
}
}
my role SlangTestActions {
# this is a direct copy of the regular 'token' method
method regex_declarator:sym<footoken>($/, $key?) {
make $<regex_def>.ast;
}
}
$*LANG.define_slang:
'MAIN',
$*LANG.slang_grammar('MAIN').^mixin(SlangTest),
$*LANG.actions.^mixin(SlangTestActions);
{}
}
use lib '.';
use Slang;
my $a₂;
grammar Bar {
footoken foo { 'foo' }
}
#`[
| if changed to 'token', it compiles ok
| but with 'footoken' we get:
| Cannot find method 'package_at_key' on 'BOOTHash': no method cache and no .^find_method
]
@lizmat
Copy link

lizmat commented Apr 8, 2020

Can you supply a full stacktrace with --ll-exception ?

@alabamenhu
Copy link
Author

alabamenhu commented Apr 8, 2020

Can you supply a full stacktrace with --ll-exception ?

Cannot find method 'package_at_key' on 'BOOTHash': no method cache and no .^find_method
   at [clipped]…/HOWtest.pm6 (HOWtest):3  ([clipped]…HOWtest/.precomp/62A85C75A73947A3F79696B3D572538E3D820789/40/404EFF7BC110EAC0EC9EB3189427F06585CC342D:regex_declarator:sym<footoken>)
 from gen/moar/stage2/QRegex.nqp:1689  (/Applications/Rakudo/bin/../share/nqp/lib/QRegex.moarvm:!protoregex)
 from <unknown>:1  (/Applications/Rakudo/bin/../share/perl6/lib/Perl6/Grammar.moarvm:regex_declarator)
 from <unknown>:1  (/Applications/Rakudo/bin/../share/perl6/lib/Perl6/Grammar.moarvm:term:sym<regex_declarator>)
 from gen/moar/stage2/QRegex.nqp:1689  (/Applications/Rakudo/bin/../share/nqp/lib/QRegex.moarvm:!protoregex)
 from <unknown>:1  (/Applications/Rakudo/bin/../share/perl6/lib/Perl6/Grammar.moarvm:term)
 from gen/moar/Grammar.nqp:3696  (/Applications/Rakudo/bin/../share/perl6/lib/Perl6/Grammar.moarvm:termish)
 from gen/moar/stage2/NQPHLL.nqp:1208  (/Applications/Rakudo/bin/../share/nqp/lib/NQPHLL.moarvm:EXPR)
 from gen/moar/Grammar.nqp:3739  (/Applications/Rakudo/bin/../share/perl6/lib/Perl6/Grammar.moarvm:EXPR)
 from gen/moar/Grammar.nqp:957  (/Applications/Rakudo/bin/../share/perl6/lib/Perl6/Grammar.moarvm:statement)
 from gen/moar/Grammar.nqp:885  (/Applications/Rakudo/bin/../share/perl6/lib/Perl6/Grammar.moarvm:statementlist)
 from gen/moar/Grammar.nqp:1068  (/Applications/Rakudo/bin/../share/perl6/lib/Perl6/Grammar.moarvm:blockoid)
 from gen/moar/Grammar.nqp:2173  (/Applications/Rakudo/bin/../share/perl6/lib/Perl6/Grammar.moarvm:package_def)
 from <unknown>:1  (/Applications/Rakudo/bin/../share/perl6/lib/Perl6/Grammar.moarvm:package_declarator:sym<grammar>)
 from gen/moar/stage2/QRegex.nqp:1689  (/Applications/Rakudo/bin/../share/nqp/lib/QRegex.moarvm:!protoregex)
 from <unknown>:1  (/Applications/Rakudo/bin/../share/perl6/lib/Perl6/Grammar.moarvm:package_declarator)
 from <unknown>:1  (/Applications/Rakudo/bin/../share/perl6/lib/Perl6/Grammar.moarvm:term:sym<package_declarator>)
 from gen/moar/stage2/QRegex.nqp:1689  (/Applications/Rakudo/bin/../share/nqp/lib/QRegex.moarvm:!protoregex)
 from <unknown>:1  (/Applications/Rakudo/bin/../share/perl6/lib/Perl6/Grammar.moarvm:term)
 from gen/moar/Grammar.nqp:3696  (/Applications/Rakudo/bin/../share/perl6/lib/Perl6/Grammar.moarvm:termish)
 from gen/moar/stage2/NQPHLL.nqp:1208  (/Applications/Rakudo/bin/../share/nqp/lib/NQPHLL.moarvm:EXPR)
 from gen/moar/Grammar.nqp:3739  (/Applications/Rakudo/bin/../share/perl6/lib/Perl6/Grammar.moarvm:EXPR)
 from gen/moar/Grammar.nqp:957  (/Applications/Rakudo/bin/../share/perl6/lib/Perl6/Grammar.moarvm:statement)
 from gen/moar/Grammar.nqp:885  (/Applications/Rakudo/bin/../share/perl6/lib/Perl6/Grammar.moarvm:statementlist)
 from gen/moar/stage2/NQPHLL.nqp:1430  (/Applications/Rakudo/bin/../share/nqp/lib/NQPHLL.moarvm:LANG)
 from gen/moar/Grammar.nqp:1323  (/Applications/Rakudo/bin/../share/perl6/lib/Perl6/Grammar.moarvm:FOREIGN_LANG)
 from gen/moar/Grammar.nqp:833  (/Applications/Rakudo/bin/../share/perl6/lib/Perl6/Grammar.moarvm:comp_unit)
 from gen/moar/Grammar.nqp:555  (/Applications/Rakudo/bin/../share/perl6/lib/Perl6/Grammar.moarvm:TOP)
 from gen/moar/stage2/QRegex.nqp:2254  (/Applications/Rakudo/bin/../share/nqp/lib/QRegex.moarvm:parse)
 from gen/moar/stage2/NQPHLL.nqp:2262  (/Applications/Rakudo/bin/../share/nqp/lib/NQPHLL.moarvm:parse)
 from gen/moar/stage2/NQPHLL.nqp:2180  (/Applications/Rakudo/bin/../share/nqp/lib/NQPHLL.moarvm:execute_stage)
 from gen/moar/stage2/NQPHLL.nqp:2213  (/Applications/Rakudo/bin/../share/nqp/lib/NQPHLL.moarvm:run)
 from gen/moar/stage2/NQPHLL.nqp:2205  (/Applications/Rakudo/bin/../share/nqp/lib/NQPHLL.moarvm:)
 from gen/moar/stage2/NQPHLL.nqp:2200  (/Applications/Rakudo/bin/../share/nqp/lib/NQPHLL.moarvm:compile)
 from gen/moar/stage2/NQPHLL.nqp:1883  (/Applications/Rakudo/bin/../share/nqp/lib/NQPHLL.moarvm:eval)
 from gen/moar/stage2/NQPHLL.nqp:2118  (/Applications/Rakudo/bin/../share/nqp/lib/NQPHLL.moarvm:evalfiles)
 from gen/moar/stage2/NQPHLL.nqp:2078  (/Applications/Rakudo/bin/../share/nqp/lib/NQPHLL.moarvm:command_eval)
 from gen/moar/Compiler.nqp:55  (/Applications/Rakudo/bin/../share/perl6/lib/Perl6/Compiler.moarvm:command_eval)
 from gen/moar/stage2/NQPHLL.nqp:2003  (/Applications/Rakudo/bin/../share/nqp/lib/NQPHLL.moarvm:command_line)
 from gen/moar/rakudo.nqp:127  (/Applications/Rakudo/bin/../share/perl6/runtime/perl6.moarvm:MAIN)
 from gen/moar/rakudo.nqp:92  (/Applications/Rakudo/bin/../share/perl6/runtime/perl6.moarvm:<mainline>)
 from <unknown>:1  (/Applications/Rakudo/bin/../share/perl6/runtime/perl6.moarvm:<main>)
 from <unknown>:1  (/Applications/Rakudo/bin/../share/perl6/runtime/perl6.moarvm:<entry>)

Just clipped out the initial directories in the user folder. Line 3 that it references is line 4 in the code I posted above (I added a comment when posting)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment