diff --git a/_test/issue-1470.go b/_test/issue-1470.go new file mode 100644 index 00000000..4852550c --- /dev/null +++ b/_test/issue-1470.go @@ -0,0 +1,15 @@ +package main + +type T struct { + num [tnum + 2]int +} + +const tnum = 23 + +func main() { + t := T{} + println(len(t.num)) +} + +// Output: +// 25 diff --git a/interp/type.go b/interp/type.go index ded5c875..e9b3d451 100644 --- a/interp/type.go +++ b/interp/type.go @@ -483,7 +483,11 @@ func nodeType2(interp *Interpreter, sc *scope, n *node, seen []*node) (t *itype, length = int(vInt(sym.rval)) default: // Size is defined by a numeric constant expression. - if _, err = interp.cfg(c0, sc, sc.pkgID, sc.pkgName); err != nil { + if _, err := interp.cfg(c0, sc, sc.pkgID, sc.pkgName); err != nil { + if strings.Contains(err.Error(), " undefined: ") { + incomplete = true + break + } return nil, err } v, ok := c0.rval.Interface().(constant.Value)