internal/legacy: fix ExtensionTypeFromDesc
Change-Id: I1da7fac27ae38e8556cc6bf360d71a38b16c22cd
Reviewed-on: https://go-review.googlesource.com/c/155457
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
diff --git a/internal/legacy/extension.go b/internal/legacy/extension.go
index 4a074d2..0589acb 100644
--- a/internal/legacy/extension.go
+++ b/internal/legacy/extension.go
@@ -172,12 +172,17 @@
Options: f.Options,
EnumType: conv.EnumType,
MessageType: conv.MessageType,
- ExtendedType: Export{}.MessageTypeOf(d.ExtendedType),
+ ExtendedType: pimpl.Export{}.MessageTypeOf(d.ExtendedType),
})
if err != nil {
panic(err)
}
- xt := pimpl.Export{}.ExtensionTypeOf(xd, reflect.Zero(t).Interface())
+ var zv interface{}
+ switch xd.Kind() {
+ case pref.EnumKind, pref.MessageKind, pref.GroupKind:
+ zv = reflect.Zero(t).Interface()
+ }
+ xt := pimpl.Export{}.ExtensionTypeOf(xd, zv)
// Cache the conversion for both directions.
extensionDescCache.Store(xt, d)