[fidl] Remove support for the v1 wire format in Go

The FIDL v1 wire format is deprecated and all channel messages are
currently sent over v2. This CL removes support for the v1 wire format
in Go.

Bug: 80348
Change-Id: I9507f6f1fe6dd97fda755324c5968647ac892e2d
Reviewed-on: https://fuchsia-review.googlesource.com/c/third_party/go/+/674062
Reviewed-by: Mitchell Kember <mkember@google.com>
Commit-Queue: Benjamin Prosnitz <bprosnitz@google.com>
diff --git a/src/syscall/zx/fidl/ctx_and_header.go b/src/syscall/zx/fidl/ctx_and_header.go
index 91dae00..45b2a53 100644
--- a/src/syscall/zx/fidl/ctx_and_header.go
+++ b/src/syscall/zx/fidl/ctx_and_header.go
@@ -28,11 +28,11 @@
 
 // MessageHeader represents a transactional message header.
 type MessageHeader struct {
-	_       struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
-	Txid    uint32   `fidl:"0" fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:""`
-	Flags   [3]uint8 `fidl:"4" fidl_offset_v1:"4" fidl_offset_v2:"4" fidl_bounds:""`
-	Magic   uint8    `fidl:"7" fidl_offset_v1:"7" fidl_offset_v2:"7" fidl_bounds:""`
-	Ordinal uint64   `fidl:"8" fidl_offset_v1:"8" fidl_offset_v2:"8" fidl_bounds:""`
+	_       struct{} `fidl:"s" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+	Txid    uint32   `fidl:"0" fidl_offset_v2:"0" fidl_bounds:""`
+	Flags   [3]uint8 `fidl:"4" fidl_offset_v2:"4" fidl_bounds:""`
+	Magic   uint8    `fidl:"7" fidl_offset_v2:"7" fidl_bounds:""`
+	Ordinal uint64   `fidl:"8" fidl_offset_v2:"8" fidl_bounds:""`
 }
 
 func (msg *MessageHeader) IsSupportedVersion() bool {
@@ -42,9 +42,7 @@
 // NewCtx creates a new MarshalerContext for unmarshaling based on msg.Flags.
 // During migrations, this controls dynamic behavior in the read path.
 func (msg *MessageHeader) NewCtx() MarshalerContext {
-	return MarshalerContext{
-		UseV2WireFormat: (msg.Flags[0] & FidlV2WireFormatFlagMask) != 0,
-	}
+	return MarshalerContext{UseV2WireFormat: true}
 }
 
 var mMessageHeader = MustCreateMarshaler(MessageHeader{})
diff --git a/src/syscall/zx/fidl/encoding_new.go b/src/syscall/zx/fidl/encoding_new.go
index 8b9ff47..6ad0410 100644
--- a/src/syscall/zx/fidl/encoding_new.go
+++ b/src/syscall/zx/fidl/encoding_new.go
@@ -180,11 +180,8 @@
 	return nil
 }
 
-const tagSizeV1 = "fidl_size_v1"
 const tagSizeV2 = "fidl_size_v2"
-const tagAlignmentV1 = "fidl_alignment_v1"
 const tagAlignmentV2 = "fidl_alignment_v2"
-const tagOffsetV1 = "fidl_offset_v1"
 const tagOffsetV2 = "fidl_offset_v2"
 const tagHandleRights = "fidl_handle_rights"
 const tagHandleSubtype = "fidl_handle_subtype"
@@ -279,15 +276,9 @@
 		if marshaler.useUnsafeCopy {
 			return true
 		}
-		if marshaler.sizeV1 != int(typ.Size()) {
-			return false
-		}
 		if marshaler.sizeV2 != int(typ.Size()) {
 			return false
 		}
-		if marshaler.alignmentV1 != typ.Align() {
-			return false
-		}
 		if marshaler.alignmentV2 != typ.Align() {
 			return false
 		}
@@ -351,7 +342,6 @@
 		kind            = marshalerKind
 		fields          []mField
 		ordinals        []uint64
-		wireOffsetsV1   []int
 		wireOffsetsV2   []int
 		presenceOffsets []uintptr
 	)
@@ -396,11 +386,6 @@
 		}
 		switch kind {
 		case structTag:
-			offsetV1, err := readIntTag(field, tagOffsetV1)
-			if err != nil {
-				return nil, err
-			}
-			wireOffsetsV1 = append(wireOffsetsV1, offsetV1)
 			offsetV2, err := readIntTag(field, tagOffsetV2)
 			if err != nil {
 				return nil, err
@@ -418,18 +403,10 @@
 		fields = append(fields, mField{fieldMarshaler, field.Index[0], field.Offset})
 	}
 
-	sizeV1, err := readIntTag(tagField, tagSizeV1)
-	if err != nil {
-		return nil, errors.New("error creating marshaller for " + typ.String() + ": " + err.Error())
-	}
 	sizeV2, err := readIntTag(tagField, tagSizeV2)
 	if err != nil {
 		return nil, errors.New("error creating marshaller for " + typ.String() + ": " + err.Error())
 	}
-	alignmentV1, err := readIntTag(tagField, tagAlignmentV1)
-	if err != nil {
-		return nil, errors.New("error creating marshaller for " + typ.String() + ": " + err.Error())
-	}
 	alignmentV2, err := readIntTag(tagField, tagAlignmentV2)
 	if err != nil {
 		return nil, errors.New("error creating marshaller for " + typ.String() + ": " + err.Error())
@@ -441,14 +418,11 @@
 		for i := 0; i < len(fields); i++ {
 			structFields = append(structFields, mFieldWithWireOffset{
 				mField:       fields[i],
-				wireOffsetV1: wireOffsetsV1[i],
 				wireOffsetV2: wireOffsetsV2[i],
 			})
 		}
 		m.fields = structFields
-		m.sizeV1 = sizeV1
 		m.sizeV2 = sizeV2
-		m.alignmentV1 = alignmentV1
 		m.alignmentV2 = alignmentV2
 		m.useUnsafeCopy = matchesWireFormatLayout(m, typ)
 		if m.useUnsafeCopy {
@@ -469,9 +443,7 @@
 		m.typ = typ
 		m.fields = ordinalToFields
 		m.ordinals = ordinals
-		m.sizeV1 = sizeV1
 		m.sizeV2 = sizeV2
-		m.alignmentV1 = alignmentV1
 		m.alignmentV2 = alignmentV2
 		m.strictness = strictness
 		m.resourceness = resourceness(isResource)
@@ -481,14 +453,11 @@
 		if err != nil {
 			return nil, errors.New("error creating marshaller for " + typ.String() + ": " + err.Error())
 		}
-		if sizeV1 != sizeV2 || alignmentV1 != alignmentV2 {
-			panic("expected table size to be unchanged between v1 and v2")
-		}
 
 		m.fields = fields
 		m.presenceOffsets = presenceOffsets
-		m.size = sizeV1
-		m.alignment = alignmentV1
+		m.size = sizeV2
+		m.alignment = alignmentV2
 		m.ordinals = ordinals
 		m.resourceness = resourceness(isResource)
 		return m, nil
@@ -952,28 +921,21 @@
 
 type mFieldWithWireOffset struct {
 	mField
-	wireOffsetV1 int
 	wireOffsetV2 int
 }
 
 type mStruct struct {
-	fields                                   []mFieldWithWireOffset
-	sizeV1, sizeV2, alignmentV1, alignmentV2 int
-	useUnsafeCopy                            bool
+	fields              []mFieldWithWireOffset
+	sizeV2, alignmentV2 int
+	useUnsafeCopy       bool
 }
 
 func (m *mStruct) getMarshalSize(ctx MarshalerContext) int {
-	if ctx.UseV2WireFormat {
-		return m.sizeV2
-	}
-	return m.sizeV1
+	return m.sizeV2
 }
 
 func (m *mStruct) getUnmarshalSize(ctx MarshalerContext) int {
-	if ctx.isV2WireFormatDecodingEnabled() {
-		return m.sizeV2
-	}
-	return m.sizeV1
+	return m.sizeV2
 }
 
 func (m *mStruct) marshal(ctx MarshalerContext, v unsafevalue.Value, out *encoder, offset int, depth int) error {
@@ -981,8 +943,8 @@
 		// Directly copy the object's memory to the buffer.
 		sh := reflect.SliceHeader{
 			Data: uintptr(unsafe.Pointer(v.UnsafeAddr())),
-			Len:  m.sizeV1,
-			Cap:  m.sizeV1,
+			Len:  m.sizeV2,
+			Cap:  m.sizeV2,
 		}
 		s := *(*[]uint8)(unsafe.Pointer(&sh))
 		copy(out.buffer[offset:], s)
@@ -990,12 +952,7 @@
 	}
 
 	for _, field := range m.fields {
-		var fieldOffset int
-		if ctx.UseV2WireFormat {
-			fieldOffset = offset + field.wireOffsetV2
-		} else {
-			fieldOffset = offset + field.wireOffsetV1
-		}
+		fieldOffset := offset + field.wireOffsetV2
 		if err := field.Marshaler.marshal(ctx, v.StructFieldOffset(field.offset), out, fieldOffset, depth); err != nil {
 			return err
 		}
@@ -1022,13 +979,7 @@
 
 	endOfLastWire := 0
 	for _, field := range m.fields {
-		var wireOffset int
-		if ctx.isV2WireFormatDecodingEnabled() {
-			wireOffset = field.wireOffsetV2
-		} else {
-			wireOffset = field.wireOffsetV1
-		}
-
+		wireOffset := field.wireOffsetV2
 		fieldOffset := offset + wireOffset
 		for i := offset + endOfLastWire; i < fieldOffset; i++ {
 			if in.buffer[i] != 0 {
@@ -1081,26 +1032,20 @@
 }
 
 type mXUnion struct {
-	typ                                      reflect.Type
-	fields                                   map[uint64]mField
-	ordinals                                 []uint64
-	sizeV1, sizeV2, alignmentV1, alignmentV2 int
+	typ                 reflect.Type
+	fields              map[uint64]mField
+	ordinals            []uint64
+	sizeV2, alignmentV2 int
 	strictness
 	resourceness
 }
 
 func (m *mXUnion) getMarshalSize(ctx MarshalerContext) int {
-	if ctx.UseV2WireFormat {
-		return m.sizeV2
-	}
-	return m.sizeV1
+	return m.sizeV2
 }
 
 func (m *mXUnion) getUnmarshalSize(ctx MarshalerContext) int {
-	if ctx.isV2WireFormatDecodingEnabled() {
-		return m.sizeV2
-	}
-	return m.sizeV1
+	return m.sizeV2
 }
 
 func (m *mXUnion) marshal(ctx MarshalerContext, v unsafevalue.Value, out *encoder, offset int, depth int) error {
diff --git a/src/syscall/zx/fidl/fidl_test/encoding_fuchsia_test.go b/src/syscall/zx/fidl/fidl_test/encoding_fuchsia_test.go
index e6fe9c5..7cd3553 100644
--- a/src/syscall/zx/fidl/fidl_test/encoding_fuchsia_test.go
+++ b/src/syscall/zx/fidl/fidl_test/encoding_fuchsia_test.go
@@ -97,7 +97,7 @@
 func TestFailureNullableTable(t *testing.T) {
 	type TestNullableTable struct {
 		_ struct{}                  `fidl:"s"`
-		A *bindingstest.SimpleTable `fidl:"0" fidl_offset_v1:"0" fidl_offset_v2:"0"`
+		A *bindingstest.SimpleTable `fidl:"0" fidl_offset_v2:"0"`
 	}
 	_, err := fidl.CreateMarshaler(TestNullableTable{})
 	if err == nil {
diff --git a/src/syscall/zx/fidl/interface_test.go b/src/syscall/zx/fidl/interface_test.go
index 439d181..8134a83 100644
--- a/src/syscall/zx/fidl/interface_test.go
+++ b/src/syscall/zx/fidl/interface_test.go
@@ -22,7 +22,7 @@
 var _ fidl.Message = (*message)(nil)
 
 type message struct {
-	_ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"0"`
+	_ struct{} `fidl:"s" fidl_size_v2:"1" fidl_alignment_v2:"0"`
 }
 
 var _mMessage = fidl.MustCreateMarshaler(message{})
diff --git a/src/syscall/zx/fidl/internal/bindingstest/impl.go b/src/syscall/zx/fidl/internal/bindingstest/impl.go
index 20df9f2..fa5e84e 100644
--- a/src/syscall/zx/fidl/internal/bindingstest/impl.go
+++ b/src/syscall/zx/fidl/internal/bindingstest/impl.go
@@ -12,8 +12,8 @@
 )
 
 type HasClientEnd struct {
-	_         struct{}                        `fidl:"s" fidl_size_v1:"4" fidl_alignment_v1:"4" fidl_size_v2:"4" fidl_alignment_v2:"4"`
-	ClientEnd ExampleProtocolWithCtxInterface `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"4"`
+	_         struct{}                        `fidl:"s" fidl_size_v2:"4" fidl_alignment_v2:"4"`
+	ClientEnd ExampleProtocolWithCtxInterface `fidl_offset_v2:"0" fidl_handle_subtype:"4"`
 }
 
 var _mHasClientEnd = _bindings.CreateLazyMarshaler(HasClientEnd{})
@@ -23,8 +23,8 @@
 }
 
 type HasServerEnd struct {
-	_         struct{}                               `fidl:"s" fidl_size_v1:"4" fidl_alignment_v1:"4" fidl_size_v2:"4" fidl_alignment_v2:"4"`
-	ServerEnd ExampleProtocolWithCtxInterfaceRequest `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"4" fidl_bounds:"0"`
+	_         struct{}                               `fidl:"s" fidl_size_v2:"4" fidl_alignment_v2:"4"`
+	ServerEnd ExampleProtocolWithCtxInterfaceRequest `fidl_offset_v2:"0" fidl_handle_subtype:"4" fidl_bounds:"0"`
 }
 
 var _mHasServerEnd = _bindings.CreateLazyMarshaler(HasServerEnd{})
@@ -34,11 +34,11 @@
 }
 
 type TestInterface1 struct {
-	_ struct{}                     `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"4" fidl_size_v2:"16" fidl_alignment_v2:"4"`
-	A Test1WithCtxInterface        `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"4"`
-	B Test1WithCtxInterface        `fidl_offset_v1:"4" fidl_offset_v2:"4" fidl_handle_subtype:"4"`
-	C Test1WithCtxInterfaceRequest `fidl_offset_v1:"8" fidl_offset_v2:"8" fidl_handle_subtype:"4" fidl_bounds:"0"`
-	D Test1WithCtxInterfaceRequest `fidl_offset_v1:"12" fidl_offset_v2:"12" fidl_handle_subtype:"4" fidl_bounds:"1"`
+	_ struct{}                     `fidl:"s" fidl_size_v2:"16" fidl_alignment_v2:"4"`
+	A Test1WithCtxInterface        `fidl_offset_v2:"0" fidl_handle_subtype:"4"`
+	B Test1WithCtxInterface        `fidl_offset_v2:"4" fidl_handle_subtype:"4"`
+	C Test1WithCtxInterfaceRequest `fidl_offset_v2:"8" fidl_handle_subtype:"4" fidl_bounds:"0"`
+	D Test1WithCtxInterfaceRequest `fidl_offset_v2:"12" fidl_handle_subtype:"4" fidl_bounds:"1"`
 }
 
 var _mTestInterface1 = _bindings.CreateLazyMarshaler(TestInterface1{})
@@ -48,8 +48,8 @@
 }
 
 type test1WithCtxEchoRequest struct {
-	_  struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
-	In *string  `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:""`
+	_  struct{} `fidl:"s" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+	In *string  `fidl_offset_v2:"0" fidl_bounds:""`
 }
 
 var _mtest1WithCtxEchoRequest = _bindings.CreateLazyMarshaler(test1WithCtxEchoRequest{})
@@ -59,8 +59,8 @@
 }
 
 type test1WithCtxEchoResponse struct {
-	_   struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
-	Out *string  `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:""`
+	_   struct{} `fidl:"s" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+	Out *string  `fidl_offset_v2:"0" fidl_bounds:""`
 }
 
 var _mtest1WithCtxEchoResponse = _bindings.CreateLazyMarshaler(test1WithCtxEchoResponse{})
@@ -70,8 +70,8 @@
 }
 
 type test1WithCtxSurpriseResponse struct {
-	_   struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
-	Foo string   `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:""`
+	_   struct{} `fidl:"s" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+	Foo string   `fidl_offset_v2:"0" fidl_bounds:""`
 }
 
 var _mtest1WithCtxSurpriseResponse = _bindings.CreateLazyMarshaler(test1WithCtxSurpriseResponse{})
@@ -81,8 +81,8 @@
 }
 
 type test1WithCtxEchoHandleRightsRequest struct {
-	_ struct{} `fidl:"s" fidl_size_v1:"4" fidl_alignment_v1:"4" fidl_size_v2:"4" fidl_alignment_v2:"4"`
-	H _zx.Port `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"6" fidl_handle_rights:"7" fidl_bounds:"0"`
+	_ struct{} `fidl:"s" fidl_size_v2:"4" fidl_alignment_v2:"4"`
+	H _zx.Port `fidl_offset_v2:"0" fidl_handle_subtype:"6" fidl_handle_rights:"7" fidl_bounds:"0"`
 }
 
 var _mtest1WithCtxEchoHandleRightsRequest = _bindings.CreateLazyMarshaler(test1WithCtxEchoHandleRightsRequest{})
@@ -92,8 +92,8 @@
 }
 
 type test1WithCtxEchoHandleRightsResponse struct {
-	_      struct{} `fidl:"s" fidl_size_v1:"4" fidl_alignment_v1:"4" fidl_size_v2:"4" fidl_alignment_v2:"4"`
-	Rights uint32   `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+	_      struct{} `fidl:"s" fidl_size_v2:"4" fidl_alignment_v2:"4"`
+	Rights uint32   `fidl_offset_v2:"0"`
 }
 
 var _mtest1WithCtxEchoHandleRightsResponse = _bindings.CreateLazyMarshaler(test1WithCtxEchoHandleRightsResponse{})
@@ -103,7 +103,7 @@
 }
 
 type SimpleTable struct {
-	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+	_             struct{} `fidl:"t" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
 	I_unknownData interface{}
 	X             int64 `fidl_ordinal:"1"`
 	XPresent      bool