protobuf-go/proto
Damien Neil 01c0e8d680 proto, internal/impl: make wire output more consistent with v1
The v1 wire marshaler sorts fields as follows:
  - All extensions, sorted by field number.
  - All non-oneof fields, sorted by field number.
  - All oneof fields, in indeterminate order.

We already make some steps toward supporting this ordering: The
fast path encoder places extensions in sorted order at the start
of the message.

This commit moves oneof fields to the end of the message, makes the
reflection-based encoder use this ordering when deterministic marshaling
is enabled, and adds a test to catch unintentional changes to the
ordering.

Users SHOULD NOT depend on stability of the marshal output. It is
subject to change over time. Without deterministic marshaling enabled,
it is subject to change over calls to Marshal.

Change-Id: I6cfd89090d790a3bb50785f32b94d2781d7d08db
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/206800
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
2019-11-12 20:59:03 +00:00
..
bench_test.go
decode_gen.go all: remove use of deprecated NewMessage 2019-09-04 17:55:31 +00:00
decode_test.go reflect/protoreflect: remove nullability from repeated extension fields 2019-11-05 18:31:30 +00:00
decode.go proto, internal/impl: implement support for weak fields 2019-09-19 22:41:12 +00:00
doc.go
encode_gen.go all: support enforce_utf8 override 2019-07-15 19:53:05 +00:00
encode_test.go proto, internal/impl: make wire output more consistent with v1 2019-11-12 20:59:03 +00:00
encode.go proto, internal/impl: make wire output more consistent with v1 2019-11-12 20:59:03 +00:00
equal_test.go proto/equal: equate nil 2019-09-23 16:43:47 +00:00
equal.go proto/equal: equate nil 2019-09-23 16:43:47 +00:00
extension_test.go internal/protolegacy: add stub v1 proto package for testing purposes 2019-10-05 23:12:32 +00:00
extension.go all: rename ExtensionType Descriptor method to TypeDescriptor (1/2) 2019-08-28 18:34:29 +00:00
isinit_test.go proto, internal/impl: implement support for weak fields 2019-09-19 22:41:12 +00:00
isinit.go
merge_test.go proto: fix self-merging 2019-09-23 16:14:39 +00:00
merge.go proto: fix self-merging 2019-09-23 16:14:39 +00:00
messageset_test.go proto, internal/impl: store unknown MessageSet items in non-mset format 2019-11-11 19:40:27 +00:00
messageset.go proto, internal/impl: store unknown MessageSet items in non-mset format 2019-11-11 19:40:27 +00:00
methods_test.go internal/impl: handle some dynamic legacy messages 2019-11-12 17:55:36 +00:00
proto_methods.go proto: reset message by default in Unmarshal 2019-09-17 21:13:42 +00:00
proto_reflect.go proto: reset message by default in Unmarshal 2019-09-17 21:13:42 +00:00
proto.go all: remove dead code 2019-08-06 21:16:48 +00:00
reset_test.go internal/impl: treat a nil oneof wrapper as if it were unset 2019-08-16 00:24:53 +00:00
reset.go proto: reset message by default in Unmarshal 2019-09-17 21:13:42 +00:00
size_gen.go
size.go proto: support message_set_wire_format 2019-07-15 19:32:30 +00:00
weak_test.go internal/impl: weak field bugfixes 2019-10-04 17:07:45 +00:00
wrappers.go