proto: return more useful error message in SetExtension (#685)
Including the types that are mismatched, rather than just stating that there was a type mismatch makes the error easier to debug and fix.
diff --git a/proto/extensions.go b/proto/extensions.go
index 816a3b9..dacdd22 100644
--- a/proto/extensions.go
+++ b/proto/extensions.go
@@ -488,7 +488,7 @@
}
typ := reflect.TypeOf(extension.ExtensionType)
if typ != reflect.TypeOf(value) {
- return errors.New("proto: bad extension value type")
+ return fmt.Errorf("proto: bad extension value type. got: %T, want: %T", value, extension.ExtensionType)
}
// nil extension values need to be caught early, because the
// encoder can't distinguish an ErrNil due to a nil extension