diff --git a/compiler/symbol.go b/compiler/symbol.go index bf5ac5f1b7..765b07cfbd 100644 --- a/compiler/symbol.go +++ b/compiler/symbol.go @@ -356,10 +356,8 @@ func (c *compilerContext) checkWasmImport(f *ssa.Function, pragma string) { c.addError(f.Pos(), fmt.Sprintf("can only use //go:wasmimport on declarations")) return } - if f.Signature.Results().Len() > 1 { - c.addError(f.Signature.Results().At(1).Pos(), fmt.Sprintf("%s: too many return values", pragma)) - } else if f.Signature.Results().Len() == 1 { - result := f.Signature.Results().At(0) + for i := 0; i < f.Signature.Results().Len(); i++ { + result := f.Signature.Results().At(i) if !isValidWasmType(result.Type(), true) { c.addError(result.Pos(), fmt.Sprintf("%s: unsupported result type %s", pragma, result.Type().String())) } diff --git a/compiler/testdata/errors.go b/compiler/testdata/errors.go index 5778a931e1..d95334d1a5 100644 --- a/compiler/testdata/errors.go +++ b/compiler/testdata/errors.go @@ -27,8 +27,6 @@ func invalidparam(a int, b string, c []byte, d *int32) //go:wasmimport modulename validreturn func validreturn() int32 -// ERROR: //go:wasmimport modulename manyreturns: too many return values -// //go:wasmimport modulename manyreturns func manyreturns() (int32, int32)