Since the introduction of :lexid in PCT, the code generation in Lua is
wrong (empty outer). For example :
$ parrot luap.pir --target=pir
Compiler Lua 5.1 on Parrot Copyright (C) 2005-2008, The Perl Foundation.
> print "hello"
.include "interpinfo.pasm"
.HLL "Lua", "lua_group"
.namespace
.sub "&start" :anon :main :lexid("11")
.param pmc args :optional
# print "start\n"
load_bytecode "languages/lua/lua.pbc"
lua_openlibs()
.local pmc env
env = get_hll_global "_G"
.local pmc vararg
vararg = argstolua(env, args)
.const .Sub main = "&main_10"
main."setfenv"(env)
($I0, $P0) = docall(main, vararg :flat)
unless $I0 goto L1
printerr "luap: "
printerr $P0
L1:
.end
.namespace
.sub "&main_10" :anon :lex :lexid("10") :outer("")
.param pmc vararg :slurpy
.const .LuaString k_print = "print"
.local pmc subr
subr = interpinfo .INTERPINFO_CURRENT_SUB
$P11 = subr.getfenv()
set $P12, $P11[k_print]
new $P13, "LuaString"
set $P13, "hello"
$P12($P13)
.end
Instead of :
...
.sub "&start" :anon :main :lexid("11")
...
.sub "&main_10" :anon :lex :lexid("10") :outer("11")
...
Fixed in r29184.
François.