The function resultsToWasmFields was originally for only
wasmimport. I adopted it for wasmexport as well, but forgot to
update a few places that were wasmimport-specific. This leads to
compiler panic if an invalid result type is passed, and also
unsafe.Pointer not actually supported. This CL fixes it.
Updates #65199.
Change-Id: I9bbd7154b70422504994840ff541c39ee596ee8f
Reviewed-on: https://go-review.googlesource.com/c/go/+/611315
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Reviewed-by: Achille Roussel <achille.roussel@gmail.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
wfs[i].Type = obj.WasmF32
case types.TFLOAT64:
wfs[i].Type = obj.WasmF64
+ case types.TUNSAFEPTR:
+ wfs[i].Type = obj.WasmPtr
default:
- base.ErrorfAt(f.Pos(), 0, "go:wasmimport %s %s: unsupported result type %s", f.WasmImport.Module, f.WasmImport.Name, t.String())
+ base.ErrorfAt(f.Pos(), 0, "%s: unsupported result type %s", pragma, t.String())
}
wfs[i].Offset = p.FrameOffset(result)
}
//go:wasmexport good3
func good3() int32 { return 0 } // one result is ok
+//go:wasmexport good4
+func good4() unsafe.Pointer { return nil } // one result is ok
+
//go:wasmexport bad1
func bad1(string) {} // ERROR "go:wasmexport: unsupported parameter type"
//go:wasmexport bad8
func bad8([4]int32) {} // ERROR "go:wasmexport: unsupported parameter type"
+//go:wasmexport bad9
+func bad9() bool { return false } // ERROR "go:wasmexport: unsupported result type"
+
+//go:wasmexport bad10
+func bad10() *byte { return nil } // ERROR "go:wasmexport: unsupported result type"
+
//go:wasmexport toomanyresults
func toomanyresults() (int32, int32) { return 0, 0 } // ERROR "go:wasmexport: too many return values"