Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(191)

Unified Diff: mojom/generators/go/translator/translator.go

Issue 2045063002: [New go generator] Implement declaring unions. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « mojom/generators/go/translator/mojom_file.go ('k') | mojom/generators/go/translator/translator_test.go » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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)
}
« no previous file with comments | « mojom/generators/go/translator/mojom_file.go ('k') | mojom/generators/go/translator/translator_test.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698