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.