From 641b625a2a18118086407177201af5d96078496b Mon Sep 17 00:00:00 2001 From: mbohlool Date: Tue, 30 Aug 2016 16:37:10 -0700 Subject: [PATCH] Add Finalize method to go2idl Generator interface --- cmd/libs/go2idl/generator/default_generator.go | 1 + cmd/libs/go2idl/generator/execute.go | 3 +++ cmd/libs/go2idl/generator/generator.go | 5 +++++ cmd/libs/go2idl/import-boss/generators/import_restrict.go | 1 + 4 files changed, 10 insertions(+) diff --git a/cmd/libs/go2idl/generator/default_generator.go b/cmd/libs/go2idl/generator/default_generator.go index 44329c7bec6..9c88e219466 100644 --- a/cmd/libs/go2idl/generator/default_generator.go +++ b/cmd/libs/go2idl/generator/default_generator.go @@ -50,6 +50,7 @@ func (d DefaultGen) PackageConsts(*Context) []string { retur func (d DefaultGen) GenerateType(*Context, *types.Type, io.Writer) error { return nil } func (d DefaultGen) Filename() string { return d.OptionalName + ".go" } func (d DefaultGen) FileType() string { return GolangFileType } +func (d DefaultGen) Finalize(*Context, io.Writer) error { return nil } func (d DefaultGen) Init(c *Context, w io.Writer) error { _, err := w.Write(d.OptionalBody) diff --git a/cmd/libs/go2idl/generator/execute.go b/cmd/libs/go2idl/generator/execute.go index eedbfdaa21f..bd882891800 100644 --- a/cmd/libs/go2idl/generator/execute.go +++ b/cmd/libs/go2idl/generator/execute.go @@ -302,5 +302,8 @@ func (c *Context) executeBody(w io.Writer, generator Generator) error { return err } } + if err := generator.Finalize(c, et); err != nil { + return err + } return et.Error() } diff --git a/cmd/libs/go2idl/generator/generator.go b/cmd/libs/go2idl/generator/generator.go index 70e2af0afd7..6dcf8acaf87 100644 --- a/cmd/libs/go2idl/generator/generator.go +++ b/cmd/libs/go2idl/generator/generator.go @@ -110,6 +110,11 @@ type Generator interface { // Generators.) Init(*Context, io.Writer) error + // Finalize should write finish up codes, and any other content that's not + // generated per-type. For example if you are generating one block (function, + // type, etc) for all types, this function can be used to close the block. + Finalize(*Context, io.Writer) error + // PackageVars should emit an array of variable lines. They will be // placed in a var ( ... ) block. There's no need to include a leading // \t or trailing \n. diff --git a/cmd/libs/go2idl/import-boss/generators/import_restrict.go b/cmd/libs/go2idl/import-boss/generators/import_restrict.go index 8e27e20ccfb..6e084b58c16 100644 --- a/cmd/libs/go2idl/import-boss/generators/import_restrict.go +++ b/cmd/libs/go2idl/import-boss/generators/import_restrict.go @@ -252,6 +252,7 @@ func (r *importRules) GenerateType(*generator.Context, *types.Type, io.Writer) e func (r *importRules) Filename() string { return ".import-restrictions" } func (r *importRules) FileType() string { return importBossFileType } func (r *importRules) Init(c *generator.Context, w io.Writer) error { return nil } +func (r *importRules) Finalize(c *generator.Context, w io.Writer) error { return nil } func dfsImports(dest *[]string, seen map[string]bool, p *types.Package) { for _, p2 := range p.Imports {