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.

Reply via email to