Chromium Code Reviews| Index: mojom/generators/go/translator/translator.go |
| diff --git a/mojom/generators/go/translator/translator.go b/mojom/generators/go/translator/translator.go |
| index 1862fd45c515dcd9aa863d4b7eeda8b32e094ef1..efc4e6fd220b2ec73d5e1c58a202a9aad2b61eee 100644 |
| --- a/mojom/generators/go/translator/translator.go |
| +++ b/mojom/generators/go/translator/translator.go |
| @@ -41,6 +41,11 @@ func (t *translator) TranslateMojomFile(fileName string) (tmplFile *TmplFile) { |
| tmplFile.Structs[i] = t.translateMojomStruct(typeKey) |
| } |
| + tmplFile.Unions = make([]*UnionTemplate, len(*file.DeclaredMojomObjects.Unions)) |
| + for i, typeKey := range *file.DeclaredMojomObjects.Unions { |
| + tmplFile.Unions[i] = t.translateMojomUnion(typeKey) |
| + } |
| + |
| tmplFile.Imports = []Import{ |
| Import{PackagePath: "mojo/public/go/bindings", PackageName: "bindings"}, |
| Import{PackagePath: "fmt", PackageName: "fmt"}, |
| @@ -93,6 +98,30 @@ func (t *translator) translateStructField(mojomField *mojom_types.StructField) ( |
| return |
| } |
| +func (t *translator) translateMojomUnion(typeKey string) (m *UnionTemplate) { |
| + m = new(UnionTemplate) |
| + u := t.GetUserDefinedType(typeKey) |
| + union, ok := u.Interface().(mojom_types.MojomUnion) |
| + if !ok { |
| + panic(fmt.Sprintf("%s is not a union.", userDefinedTypeShortName(u))) |
|
vardhan
2016/06/08 20:45:47
use log.Panicf() ? I guess you're looking to panic
azani
2016/06/08 23:51:48
Done.
|
| + } |
| + m.Name = t.goTypeName(typeKey) |
| + |
| + for _, field := range union.Fields { |
| + m.Fields = append(m.Fields, t.translateUnionField(&field)) |
| + m.Fields[len(m.Fields)-1].Union = m |
| + } |
| + |
| + return m |
| +} |
| + |
| +func (t *translator) translateUnionField(mojomField *mojom_types.UnionField) (field UnionFieldTemplate) { |
| + field.Name = formatName(*mojomField.DeclData.ShortName) |
| + field.Type = t.translateType(mojomField.Type) |
| + field.Tag = mojomField.Tag |
| + return field |
| +} |
| + |
| func (t *translator) encodingInfo(mojomType mojom_types.Type) EncodingInfo { |
| return t.encodingInfoNested(mojomType, 0) |
| } |