diff --git a/_test/fun8.go b/_test/fun8.go new file mode 100644 index 00000000..c13cfe34 --- /dev/null +++ b/_test/fun8.go @@ -0,0 +1,8 @@ +package main + +func main() { println(f == nil) } + +var f func() + +// Output: +// true diff --git a/interp/gta.go b/interp/gta.go index a6d7ac58..98264721 100644 --- a/interp/gta.go +++ b/interp/gta.go @@ -72,8 +72,15 @@ func (interp *Interpreter) gta(root *node, rpath string) ([]*node, error) { err = compDefineX(sc, n) case valueSpec: - // TODO: handle global ValueSpec - //err = n.cfgError("global ValueSpec not implemented") + l := len(n.child) - 1 + if n.typ = n.child[l].typ; n.typ == nil { + if n.typ, err = nodeType(interp, sc, n.child[l]); err != nil { + return false + } + } + for _, c := range n.child[:l] { + sc.sym[c.ident] = &symbol{index: sc.add(n.typ), kind: varSym, global: true, typ: n.typ} + } case funcDecl: if n.typ, err = nodeType(interp, sc, n.child[2]); err != nil {