github.com/nevalang/neva@v0.23.1-0.20240507185603-7696a9bb8dda/internal/runtime/funcs/panic.go (about) 1 package funcs 2 3 import ( 4 "context" 5 "fmt" 6 7 "github.com/nevalang/neva/internal/runtime" 8 ) 9 10 type panicker struct{} 11 12 func (p panicker) Create( 13 io runtime.FuncIO, 14 _ runtime.Msg, 15 ) (func(ctx context.Context), error) { 16 msgIn, err := io.In.Port("msg") 17 if err != nil { 18 return nil, err 19 } 20 return func(ctx context.Context) { 21 select { 22 case <-ctx.Done(): 23 return 24 case panicMsg := <-msgIn: 25 cancel := ctx.Value("cancel").(context.CancelFunc) 26 cancel() 27 fmt.Printf("panic: %v\n", panicMsg) 28 } 29 }, nil 30 }