errors_tinygo.go 633 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. //go:build tinygo
  2. package msgp
  3. import (
  4. "reflect"
  5. )
  6. // ctxString converts the incoming interface{} slice into a single string,
  7. // without using fmt under tinygo
  8. func ctxString(ctx []interface{}) string {
  9. out := ""
  10. for idx, cv := range ctx {
  11. if idx > 0 {
  12. out += "/"
  13. }
  14. out += ifToStr(cv)
  15. }
  16. return out
  17. }
  18. type stringer interface {
  19. String() string
  20. }
  21. func ifToStr(i interface{}) string {
  22. switch v := i.(type) {
  23. case stringer:
  24. return v.String()
  25. case error:
  26. return v.Error()
  27. case string:
  28. return v
  29. default:
  30. return reflect.ValueOf(i).String()
  31. }
  32. }
  33. func quoteStr(s string) string {
  34. return simpleQuoteStr(s)
  35. }