# New Ticket Created by Jeff Horwitz # Please include the string: [perl #65046] # in the subject line of all future correspondence about this issue. # <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=65046 >
Jonathan asked that I submit this as a reminder to him. mod_perl6 is written in Perl 6 and relies heavily on classes defined in PIR. However, when mod_perl6 is precompiled to PIR, those classes do not yet exist, and parser does not see the names as classes. The result is that Foo.new() becomes: $P20 = "Foo"() $P21 = "!dispatch_method"($P20, "new") with the out-of-place "Foo"() failing miserably. The offending code can be easily reproduced using the pir target: [j...@groovy rakudo]$ ./perl6 --target=pir > Foo.new .namespace [] .sub "_block11" :main :anon :subid("10_1240503611") .param pmc param_22 :slurpy .annotate "line", 0 .const 'Sub' $P24 = "12_1240503611" capture_lex $P24 find_name $P13, "!UNIT_START" .annotate "line", 1 .const 'Sub' $P15 = "11_1240503611" .lex "@_", param_22 .tailcall $P13($P15, param_22) .annotate "line", 0 .return () .end .namespace [] .sub "" :load :init :subid("post13") :outer("10_1240503611") .annotate "line", 0 .const 'Sub' $P12 = "10_1240503611" .local pmc block set block, $P12 $P0 = compreg "Perl6" unless null $P0 goto have_perl6 load_bytecode "perl6.pbc" have_perl6: .end .namespace [] .sub "_block14" :anon :subid("11_1240503611") .annotate "line", 1 get_namespace $P16 .lex "$?PACKAGE", $P16 .include "interpinfo.pasm" new $P17, "Perl6Scalar" .lex "$_", $P17 new $P18, "Perl6Scalar" .lex "$/", $P18 new $P19, "Perl6Scalar" .lex "$!", $P19 $P20 = "Foo"() $P21 = "!dispatch_method"($P20, "new") .return ($P21) .end .namespace [] .sub "_block23" :load :anon :subid("12_1240503611") :outer("10_1240503611") .annotate "line", 0 .include "interpinfo.pasm" $P0 = interpinfo .INTERPINFO_CURRENT_SUB $P0 = $P0."get_outer"() $P0() .return () .end