# New Ticket Created by Patrick R. Michaud
# Please include the string: [perl #56184]
# in the subject line of all future correspondence about this issue.
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=56184 >
Parrot seems to have a problem with lexical handling. Consider
the following Perl 6 code:
use v6;
{
my $count = 1;
sub foo {
say "-->", $count, "<--";
}
foo();
}
When run using Rakudo Perl, the $count in sub foo comes back as null.
$ ./parrot perl6.pbc x
--><--
$
Here's a simplified PIR version of the above that exhibits the
same bug:
$ cat x.pir
.sub "main"
get_global $P10, "_block16"
newclosure $P10, $P10
$P34 = $P10()
.return ($P34)
.end
.sub "_block16" :outer("main")
new $P22, "Integer"
assign $P22, 1
.lex "$count", $P22
$P33 = "foo"()
.return ($P33)
.end
.sub "foo" :outer("_block16")
find_lex $P29, "$count"
print "-->"
print $P29
print "<--\n"
.end
$ ./parrot x.pir
-->Null PMC access in get_string()
current instr.: 'foo' pc 42 (x.pir:21)
called from Sub '_block16' pc 31 (x.pir:13)
called from Sub 'main' pc 11 (x.pir:4)
$
Pm