Files
tinygo/testdata/wasmexport.go
T
Ayke 9da8b5c786 wasm: add //go:wasmexport support (#4451)
This adds support for the `//go:wasmexport` pragma as proposed here:
https://github.com/golang/go/issues/65199

It is currently implemented only for wasip1 and wasm-unknown, but it is
certainly possible to extend it to other targets like GOOS=js and
wasip2.
2024-10-04 15:33:47 -07:00

53 lines
853 B
Go

package main
import "time"
func init() {
println("called init")
go adder()
}
//go:wasmimport tester callTestMain
func callTestMain()
func main() {
// main.main is not used when using -buildmode=c-shared.
callTestMain()
}
//go:wasmexport hello
func hello() {
println("hello!")
}
//go:wasmexport add
func add(a, b int) int {
println("called add:", a, b)
addInputs <- a
addInputs <- b
return <-addOutput
}
var addInputs = make(chan int)
var addOutput = make(chan int)
func adder() {
for {
a := <-addInputs
b := <-addInputs
time.Sleep(time.Millisecond)
addOutput <- a + b
}
}
//go:wasmimport tester callOutside
func callOutside(a, b int) int
//go:wasmexport reentrantCall
func reentrantCall(a, b int) int {
println("reentrantCall:", a, b)
result := callOutside(a, b)
println("reentrantCall result:", result)
return result
}