# New Ticket Created by Christian Bartolomaeus
# Please include the string: [perl #123002]
# in the subject line of all future correspondence about this issue.
# <URL: https://rt.perl.org/Ticket/Display.html?id=123002 >
I got a NullPointerException with a golfed version of a failing test from roast
(test for RT #114380 in S14-roles/basic.t). The test in question uses
"eval_lives_ok" which does something similiar to the golfed example via
Test.pm. The test in question runs fine with "lives_ok" instead of
"eval_lives_ok"
$ perl6-j --version
This is perl6 version 2014.09-222-g0dcd0d6 built on JVM
$ perl6-j -e "sub foo { EVAL 'role R { }' }; foo; say 'alive'"
===SORRY!===
java.lang.NullPointerException
Using EVAL on the role declaration directly doesn't fail:
$ perl6-j -e "EVAL 'role R { }'; say 'alive'"
alive
With the help from psch (http://irclog.perlgeek.de/perl6/2014-10-17#i_9527240)
I tried to get some more info with jdb, but everything I got was:
====
$ jdb -sourcepath nqp/src/vpathm/jvm/runtime/ -attach 8000
Set uncaught java.lang.Throwable
Set deferred uncaught java.lang.Throwable
Initializing jdb ...
>
VM Started: No frames on the current call stack
main[1] catch java.lang.NullPointerException
Set all java.lang.NullPointerException
main[1] run
>
Exception occurred: java.lang.NullPointerException (to be caught at:
64411D3B4B0DBD5895A2F295CC3F75570C8D73C2.qb_54(), line=1,497
bci=2,686)"thread=main", org.perl6.nqp.runtime.Ops.getobjsc(), line=3,811 bci=1
main[1] up
main[2] list
Source file not found: src/Perl6/World.nqp
main[2] resume
All threads resumed.
>
The application exited
====
Additional informations where available with --ll-exception:
====
$ perl6-j --ll-exception -e "sub foo { EVAL 'role R { }' }; foo;"
java.lang.NullPointerException
in compile_in_context (src/Perl6/World.nqp:1497)
in pkg_set_role_body_block (src/Perl6/World.nqp:1745)
in package_def (src/Perl6/Actions.nqp:1953)
in !reduce (gen/jvm/stage2/QRegex.nqp:771)
in !cursor_pass (gen/jvm/stage2/QRegex.nqp:732)
in package_def (src/Perl6/Grammar.nqp:2395)
in package_declarator:sym<role> (src/Perl6/Grammar.nqp)
in !protoregex (gen/jvm/stage2/QRegex.nqp:808)
in package_declarator (src/Perl6/Grammar.nqp)
in term:sym<package_declarator> (src/Perl6/Grammar.nqp)
in !protoregex (gen/jvm/stage2/QRegex.nqp:808)
in term (src/Perl6/Grammar.nqp)
in termish (src/Perl6/Grammar.nqp:3557)
in EXPR (gen/jvm/stage2/NQPHLL.nqp:558)
in EXPR (src/Perl6/Grammar.nqp:3588)
in statement (src/Perl6/Grammar.nqp:1300)
in statementlist (src/Perl6/Grammar.nqp:1235)
in LANG (gen/jvm/stage2/NQPHLL.nqp:766)
in FOREIGN_LANG (src/Perl6/Grammar.nqp:1638)
in comp_unit (src/Perl6/Grammar.nqp:1093)
in TOP (src/Perl6/Grammar.nqp:356)
in parse (gen/jvm/stage2/QRegex.nqp:1400)
in parse (gen/jvm/stage2/NQPHLL.nqp:1425)
in compile (gen/jvm/stage2/NQPHLL.nqp:1381)
in EVAL (gen/jvm/CORE.setting:763)
in EVAL (gen/jvm/CORE.setting:756)
in foo (-e:1)
in <unit> (-e:1)
in <unit-outer> (-e:1)
in eval (gen/jvm/stage2/NQPHLL.nqp:1145)
in (gen/jvm/stage2/NQPHLL.nqp:1234)
in command_eval (gen/jvm/stage2/NQPHLL.nqp:1231)
in command_eval (src/Perl6/Compiler.nqp:17)
in command_line (gen/jvm/stage2/NQPHLL.nqp:1216)
in MAIN (gen/jvm/main.nqp:39)
in <mainline> (gen/jvm/main.nqp:35)
in (gen/jvm/main.nqp)
====