Index: mojom/generators/go/translator/translator.go |
diff --git a/mojom/generators/go/translator/translator.go b/mojom/generators/go/translator/translator.go |
index 7629754cf8e6758278270d0d31476fb08520cd28..6864f4ad63d72d159f194d7cbe5b1997f65d22aa 100644 |
--- a/mojom/generators/go/translator/translator.go |
+++ b/mojom/generators/go/translator/translator.go |
@@ -121,6 +121,9 @@ func (t *translator) translateUnionField(mojomField *mojom_types.UnionField) (fi |
field.Tag = mojomField.Tag |
field.EncodingInfo = t.encodingInfo(mojomField.Type) |
field.EncodingInfo.setIdentifier("u.Value") |
+ if info, ok := field.EncodingInfo.(*unionTypeEncodingInfo); ok { |
+ info.nestedUnion = true |
+ } |
return field |
} |
@@ -254,6 +257,8 @@ func (t *translator) typeRefEncodingInfo(typeRef mojom_types.TypeReference) (inf |
switch m := mojomType.(type) { |
case *mojom_types.UserDefinedTypeStructType: |
info = t.structTypeEncodingInfo(m.Value) |
+ case *mojom_types.UserDefinedTypeUnionType: |
+ info = t.unionTypeEncodingInfo(m.Value) |
} |
info.setNullable(typeRef.Nullable) |
return info |
@@ -264,6 +269,11 @@ func (t *translator) structTypeEncodingInfo(mojomType mojom_types.MojomStruct) ( |
return info |
} |
+func (t *translator) unionTypeEncodingInfo(mojomType mojom_types.MojomUnion) (info *unionTypeEncodingInfo) { |
+ info = new(unionTypeEncodingInfo) |
+ return info |
+} |
+ |
// Implements sort.Interface. |
type structFieldSerializationSorter []mojom_types.StructField |