proto: enable/disable fast path with build tags
Remove the Reflection field from MarshalOptions and UnmarshalOptions.
Disable the fast path and use the reflection-based implementation when
the 'protoreflect' build tag is set.
Change-Id: Ic674e3af67501de27fb03ec2712fbed40eae7fef
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/170896
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
diff --git a/proto/proto_methods.go b/proto/proto_methods.go
new file mode 100644
index 0000000..360a1ee
--- /dev/null
+++ b/proto/proto_methods.go
@@ -0,0 +1,17 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// The protoreflect build tag disables use of fast-path methods.
+// +build !protoreflect
+
+package proto
+
+import "github.com/golang/protobuf/v2/runtime/protoiface"
+
+func protoMethods(m Message) *protoiface.Methods {
+ if x, ok := m.(protoiface.Methoder); ok {
+ return x.XXX_Methods()
+ }
+ return nil
+}