gnolang / gno

Gno: An interpreted, stack-based Go virtual machine to build succinct and composable apps + Gno.land: a blockchain for timeless code and fair open-source
https://gno.land/
Other
849 stars 345 forks source link

can't append `nil` to a slice of interfaces #1136

Closed thehowl closed 6 months ago

thehowl commented 9 months ago
package main

func main() {
        var errors []error
        errors = append(errors, nil)
        _ = errors
}
$ gno run a.gno
--- preprocess stack ---
stack 2: func main() { var errors<VPBlock(1,0)> [](const-type .uverse.error); errors<VPBlock(1,0)> = (const (append func(x <X>{},args MaybeNativeType{...<X.Elem()>{}})(res <X>{})))(error
s<VPBlock(1,0)>, (const (undefined))); _<VPUverse(0)> = errors<VPUverse(0)> }
stack 1: file{ package main; func main() { var errors<VPBlock(1,0)> [](const-type .uverse.error); errors<VPBlock(1,0)> = (const (append func(x <X>{},args MaybeNativeType{...<X.Elem()>{}}
)(res <X>{})))(errors<VPBlock(1,0)>, (const (undefined))); _<VPUverse(0)> = errors<VPUverse(0)> } }
stack 0: package(main)
------------------------
panic: unspecified generic varg args MaybeNativeType{...<X.Elem()>{}} [recovered]
        panic: main/a.gno:5: unspecified generic varg args MaybeNativeType{...<X.Elem()>{}}

goroutine 1 [running]:
github.com/gnolang/gno/gnovm/pkg/gnolang.Preprocess.func2.1()
        /home/howl/oc/gno/gnovm/pkg/gnolang/preprocess.go:173 +0x46d
panic({0xbf0b20, 0xc00007d560})
        /usr/lib/go/src/runtime/panic.go:890 +0x263
github.com/gnolang/gno/gnovm/pkg/gnolang.(*FuncType).Specify(0xc0000ac5f0, {0xf651b0, 0xc0001881b0}, {0xc0001b79a0, 0x2, 0x2}, 0x0)
        /home/howl/oc/gno/gnovm/pkg/gnolang/types.go:1174 +0x1a54
github.com/gnolang/gno/gnovm/pkg/gnolang.Preprocess.func2({0xc000212a00?, 0x3, 0x20}, 0x24, 0x40ae04?, {0xf5acf8, 0xc0002fd620?}, 0x3)
        /home/howl/oc/gno/gnovm/pkg/gnolang/preprocess.go:1096 +0x3c6e
github.com/gnolang/gno/gnovm/pkg/gnolang.transcribe(0xc0001a9970, {0xc000212a00?, 0x3, 0x20}, 0x24, 0xf5aaf0?, {0xf5acf8?, 0xc0002fd620}, 0xc0001a9217)
        /home/howl/oc/gno/gnovm/pkg/gnolang/transcribe.go:728 +0x4b63
github.com/gnolang/gno/gnovm/pkg/gnolang.transcribe(0xc0001a9970, {0xc000212a00?, 0x2, 0x20}, 0x46, 0xf5b170?, {0xf5aaf0?, 0xc0002fd680}, 0xc0001a9447)
        /home/howl/oc/gno/gnovm/pkg/gnolang/transcribe.go:371 +0x6e99
thehowl commented 9 months ago

This may actually be the same issue (or at least, the same fix) as #1149