internal/impl: minor refactoring

Change-Id: I1a5f4ca31fec72a39ba6690af06f4ae8576408cc
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/226897
Reviewed-by: Damien Neil <dneil@google.com>
diff --git a/internal/impl/api_export.go b/internal/impl/api_export.go
index bde4754..4d22c96 100644
--- a/internal/impl/api_export.go
+++ b/internal/impl/api_export.go
@@ -124,7 +124,7 @@
 	if mv := (Export{}).protoMessageV2Of(m); mv != nil {
 		return mv
 	}
-	return legacyWrapMessage(reflect.ValueOf(m))
+	return legacyWrapMessage(reflect.ValueOf(m)).Interface()
 }
 
 // MessageOf returns the protoreflect.Message interface over m.
@@ -136,7 +136,7 @@
 	if mv := (Export{}).protoMessageV2Of(m); mv != nil {
 		return mv.ProtoReflect()
 	}
-	return legacyWrapMessage(reflect.ValueOf(m)).ProtoReflect()
+	return legacyWrapMessage(reflect.ValueOf(m))
 }
 
 // MessageDescriptorOf returns the protoreflect.MessageDescriptor for m.
diff --git a/internal/impl/codec_field.go b/internal/impl/codec_field.go
index 9497707..c00744d 100644
--- a/internal/impl/codec_field.go
+++ b/internal/impl/codec_field.go
@@ -824,5 +824,5 @@
 	if m, ok := v.Interface().(pref.ProtoMessage); ok {
 		return m
 	}
-	return legacyWrapMessage(v)
+	return legacyWrapMessage(v).Interface()
 }
diff --git a/internal/impl/convert.go b/internal/impl/convert.go
index 5fdb022..9fc384a 100644
--- a/internal/impl/convert.go
+++ b/internal/impl/convert.go
@@ -426,7 +426,7 @@
 	if m, ok := v.Interface().(pref.ProtoMessage); ok {
 		return pref.ValueOfMessage(m.ProtoReflect())
 	}
-	return pref.ValueOfMessage(legacyWrapMessage(v).ProtoReflect())
+	return pref.ValueOfMessage(legacyWrapMessage(v))
 }
 
 func (c *messageConverter) GoValueOf(v pref.Value) reflect.Value {
diff --git a/internal/impl/legacy_message.go b/internal/impl/legacy_message.go
index 43b8be2..a723569 100644
--- a/internal/impl/legacy_message.go
+++ b/internal/impl/legacy_message.go
@@ -21,15 +21,15 @@
 	piface "google.golang.org/protobuf/runtime/protoiface"
 )
 
-// legacyWrapMessage wraps v as a protoreflect.ProtoMessage,
+// legacyWrapMessage wraps v as a protoreflect.Message,
 // where v must be a *struct kind and not implement the v2 API already.
-func legacyWrapMessage(v reflect.Value) pref.ProtoMessage {
+func legacyWrapMessage(v reflect.Value) pref.Message {
 	typ := v.Type()
 	if typ.Kind() != reflect.Ptr || typ.Elem().Kind() != reflect.Struct {
 		return aberrantMessage{v: v}
 	}
 	mt := legacyLoadMessageInfo(typ, "")
-	return mt.MessageOf(v.Interface()).Interface()
+	return mt.MessageOf(v.Interface())
 }
 
 var legacyMessageTypeCache sync.Map // map[reflect.Type]*MessageInfo