gopherdata / gophernotes

The Go kernel for Jupyter notebooks and nteract.
MIT License
3.8k stars 262 forks source link

not a package: "n" in n.multiply <*ast.SelectorExpr> #254

Open chbk opened 1 year ago

chbk commented 1 year ago
type Node struct {
  value int
  next *Node
}

func (n Node) multiply(x int) int {
  return n.value * x
}

n := Node{2, nil}
n.multiply(3)
repl.go:11:1: not a package: "n" in n.multiply <*ast.SelectorExpr>

However, this works:

type Node struct {
  value int
}

func (n Node) multiply(x int) int {
  return n.value * x
}

n := Node{2}
n.multiply(3)

Versions:

Related to #240

cosmos72 commented 3 months ago

Thanks for spotting this! It's a bug related to recursive types. Similar issues keep popping up, because reflect package cannot create recursive types so they need to be emulated - and the emulation is not yet perfect.