From 06437628522eea1e36a125bc5d252273ee694a06 Mon Sep 17 00:00:00 2001 From: Nicholas Wiersma Date: Thu, 18 Jun 2020 15:18:04 +0200 Subject: [PATCH] fix: allow uint in make len and cap --- _test/make2.go | 12 ++++++++++++ interp/run.go | 8 ++++---- 2 files changed, 16 insertions(+), 4 deletions(-) create mode 100644 _test/make2.go diff --git a/_test/make2.go b/_test/make2.go new file mode 100644 index 00000000..bc71758e --- /dev/null +++ b/_test/make2.go @@ -0,0 +1,12 @@ +package main + +import "fmt" + +func main() { + var s uint = 4 + t := make([]int, s) + fmt.Println(t) +} + +// Output: +// [0 0 0 0] diff --git a/interp/run.go b/interp/run.go index ac456150..5b89ecd1 100644 --- a/interp/run.go +++ b/interp/run.go @@ -2443,14 +2443,14 @@ func _make(n *node) { switch len(n.child) { case 3: n.exec = func(f *frame) bltn { - len := int(value(f).Int()) + len := int(vInt(value(f))) dest(f).Set(reflect.MakeSlice(typ, len, len)) return next } case 4: value1 := genValue(n.child[3]) n.exec = func(f *frame) bltn { - dest(f).Set(reflect.MakeSlice(typ, int(value(f).Int()), int(value1(f).Int()))) + dest(f).Set(reflect.MakeSlice(typ, int(vInt(value(f))), int(vInt(value1(f))))) return next } } @@ -2465,7 +2465,7 @@ func _make(n *node) { case 3: value := genValue(n.child[2]) n.exec = func(f *frame) bltn { - dest(f).Set(reflect.MakeChan(typ, int(value(f).Int()))) + dest(f).Set(reflect.MakeChan(typ, int(vInt(value(f))))) return next } } @@ -2480,7 +2480,7 @@ func _make(n *node) { case 3: value := genValue(n.child[2]) n.exec = func(f *frame) bltn { - dest(f).Set(reflect.MakeMapWithSize(typ, int(value(f).Int()))) + dest(f).Set(reflect.MakeMapWithSize(typ, int(vInt(value(f))))) return next } }