To start off, I know I am doing something wrong. My usage of PullTable
is based off the work done with encoding JSON support.
panic: interface conversion: lua.value is nil, not *lua.luaClosure
goroutine 1 [running]:
github.com/Shopify/go-lua.(*State).prototype(...)
/Users/pivotal/go/pkg/mod/github.com/!shopify/[email protected]/debug.go:14
github.com/Shopify/go-lua.(*State).currentLine(...)
/Users/pivotal/go/pkg/mod/github.com/!shopify/[email protected]/debug.go:17
github.com/Shopify/go-lua.(*State).runtimeError(0xc0000d8000, 0x116fafe, 0x15)
/Users/pivotal/go/pkg/mod/github.com/!shopify/[email protected]/debug.go:43 +0x2bc
github.com/Shopify/go-lua.(*State).next(0xc0000d8000, 0xc0000a23c0, 0x4, 0xc0000e2360)
/Users/pivotal/go/pkg/mod/github.com/!shopify/[email protected]/tables.go:230 +0x6eb
github.com/Shopify/go-lua.(*State).Next(0xc0000d8000, 0x3, 0x12821b1)
/Users/pivotal/go/pkg/mod/github.com/!shopify/[email protected]/lua.go:1193 +0x81
github.com/Shopify/goluago/util.pullTableRec(0xc0000d8000, 0xffffffffffffffff, 0x5, 0xc00009e320, 0xf, 0xc000094500)
/Users/pivotal/go/pkg/mod/github.com/!shopify/[email protected]/util/deep_pull.go:63 +0x11d
github.com/Shopify/goluago/util.toGoValue(0xc0000d8000, 0xffffffffffffffff, 0xc00009e320, 0xf, 0x10cdb01, 0xc0000d8000)
/Users/pivotal/go/pkg/mod/github.com/!shopify/[email protected]/util/deep_pull.go:143 +0x246
github.com/Shopify/goluago/util.pullTableRec(0xc0000d8000, 0x1, 0x5, 0xc0000d8000, 0x1, 0xffffffffffffffff)
/Users/pivotal/go/pkg/mod/github.com/!shopify/[email protected]/util/deep_pull.go:72 +0x17b
github.com/Shopify/goluago/util.PullTable(0xc0000d8000, 0x1, 0x5, 0x0, 0x0, 0xc00009e258)
/Users/pivotal/go/pkg/mod/github.com/!shopify/[email protected]/util/deep_pull.go:47 +0x1ef
main.main()
package main
import (
"github.com/Shopify/go-lua"
"github.com/Shopify/goluago/util"
"log"
"os"
)
func main() {
l := lua.NewState()
source := `
local my_map = {
key1="value1",
key2="value2",
}
local some_list = {my_map, "item2"}
return({list_with_a_map=some_list})
`
if err := lua.DoString(l, source); err != nil {
panic(err)
}
index := 1
if !l.IsTable(index) {
log.Println("the last return value of the script must be a table")
os.Exit(1)
}
_, err := util.PullTable(l, index)
if err != nil {
log.Panicln("getting table: %s", err)
}
}