summaryrefslogtreecommitdiff
path: root/compat/json/borrowed_misc.go
diff options
context:
space:
mode:
Diffstat (limited to 'compat/json/borrowed_misc.go')
-rw-r--r--compat/json/borrowed_misc.go24
1 files changed, 24 insertions, 0 deletions
diff --git a/compat/json/borrowed_misc.go b/compat/json/borrowed_misc.go
index 30a3b0e..e6b0162 100644
--- a/compat/json/borrowed_misc.go
+++ b/compat/json/borrowed_misc.go
@@ -4,6 +4,10 @@
package json
+import (
+ "reflect"
+)
+
// A SyntaxError is a description of a JSON syntax error.
// Unmarshal will return a SyntaxError if the JSON can't be parsed.
type SyntaxError struct {
@@ -12,3 +16,23 @@ type SyntaxError struct {
}
func (e *SyntaxError) Error() string { return e.msg }
+
+// A MarshalerError represents an error from calling a MarshalJSON or MarshalText method.
+type MarshalerError struct {
+ Type reflect.Type
+ Err error
+ sourceFunc string
+}
+
+func (e *MarshalerError) Error() string {
+ srcFunc := e.sourceFunc
+ if srcFunc == "" {
+ srcFunc = "MarshalJSON"
+ }
+ return "json: error calling " + srcFunc +
+ " for type " + e.Type.String() +
+ ": " + e.Err.Error()
+}
+
+// Unwrap returns the underlying error.
+func (e *MarshalerError) Unwrap() error { return e.Err }