diff --git a/bind/gengo.go b/bind/gengo.go index da3c574..d5e863b 100644 --- a/bind/gengo.go +++ b/bind/gengo.go @@ -401,11 +401,14 @@ func (g *goGen) gen() error { scope := g.pkg.Scope() names := scope.Names() + + hasExported := false for _, name := range names { obj := scope.Lookup(name) if !obj.Exported() { continue } + hasExported = true switch obj := obj.(type) { // TODO(crawshaw): case *types.Var: @@ -433,6 +436,9 @@ func (g *goGen) gen() error { continue } } + if !hasExported { + g.errorf("no exported names in the package %q", g.pkg.Path()) + } if len(funcs) > 0 { g.Printf("func init() {\n") diff --git a/bind/genjava.go b/bind/genjava.go index 4b14860..632153a 100644 --- a/bind/genjava.go +++ b/bind/genjava.go @@ -668,11 +668,13 @@ func (g *javaGen) gen() error { scope := g.pkg.Scope() names := scope.Names() + hasExported := false for _, name := range names { obj := scope.Lookup(name) if !obj.Exported() { continue } + hasExported = true switch o := obj.(type) { // TODO(crawshaw): case *types.Var: @@ -700,6 +702,9 @@ func (g *javaGen) gen() error { g.errorf("unsupported exported type: %T", obj) } } + if !hasExported { + g.errorf("no exported names in the package %q", g.pkg.Path()) + } for i, name := range funcs { g.Printf("private static final int CALL_%s = %d;\n", name, i+1) diff --git a/bind/genobjc.go b/bind/genobjc.go index 25bc35c..441d355 100644 --- a/bind/genobjc.go +++ b/bind/genobjc.go @@ -39,11 +39,13 @@ func (g *objcGen) init() { g.names = nil scope := g.pkg.Scope() + hasExported := false for _, name := range scope.Names() { obj := scope.Lookup(name) if !obj.Exported() { continue } + hasExported = true switch obj := obj.(type) { case *types.Func: if isCallable(obj) { @@ -63,6 +65,9 @@ func (g *objcGen) init() { g.errorf("unsupported exported type for %s: %T", obj.Name(), obj) } } + if !hasExported { + g.errorf("no exported names in the package %q", g.pkg.Path()) + } } const objcPreamble = `// Objective-C API for talking to %[1]s Go package.