Skip to content

Commit d4d2321

Browse files
committed
wit/bindgen: create Go packages on-demand
1 parent ed09e1a commit d4d2321

1 file changed

Lines changed: 10 additions & 7 deletions

File tree

wit/bindgen/generator.go

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -227,11 +227,6 @@ func (g *generator) define(dir wit.Direction, v wit.Node) (defined bool) {
227227
func (g *generator) defineWorlds() error {
228228
g.opts.logger.Infof("Generating Go for %d world(s)\n", len(g.res.Worlds))
229229
for _, w := range g.res.Worlds {
230-
// Define a Go package for every world, regardless of use
231-
_, err := g.newPackage(w, nil, "")
232-
if err != nil {
233-
return err
234-
}
235230
if w == g.world || g.world == nil {
236231
err := g.defineWorld(w)
237232
if err != nil {
@@ -2289,9 +2284,17 @@ func (g *generator) cgoFileFor(owner wit.TypeOwner) *gen.File {
22892284

22902285
func (g *generator) packageFor(owner wit.TypeOwner) *gen.Package {
22912286
pkg := g.witPackages[owner]
2287+
if pkg != nil {
2288+
return pkg
2289+
}
2290+
var err error
2291+
switch owner := (owner).(type) {
2292+
case *wit.World:
2293+
pkg, err = g.newPackage(owner, nil, "")
2294+
}
22922295
if pkg == nil {
2293-
panic(fmt.Sprintf("BUG: nil package for wit.TypeOwner %s (%T: %p)",
2294-
owner.WITPackage().Name.String(), owner, owner))
2296+
panic(fmt.Sprintf("BUG: cannot create Go package for wit.TypeOwner %s (%T: %p): %v",
2297+
owner.WITPackage().Name.String(), owner, owner, err))
22952298
}
22962299
return pkg
22972300
}

0 commit comments

Comments
 (0)