From da21113b0c1d1b2979657d78320c31ffcb3c2c92 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Wed, 8 Nov 2017 11:06:09 -0800 Subject: [PATCH] cmd/go: add dependencies for implicit SWIG imports This fixes the misc/swig tests. Change-Id: I60c87bbd361fe8b4f69e4507b25dc99a226da3d7 Reviewed-on: https://go-review.googlesource.com/76610 Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot Reviewed-by: Russ Cox --- src/cmd/go/internal/load/pkg.go | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/cmd/go/internal/load/pkg.go b/src/cmd/go/internal/load/pkg.go index b2cfc8c26d..27684fa1f3 100644 --- a/src/cmd/go/internal/load/pkg.go +++ b/src/cmd/go/internal/load/pkg.go @@ -958,13 +958,23 @@ func (p *Package) load(stk *ImportStack, bp *build.Package, err error) { // Cgo translation adds imports of "runtime/cgo" and "syscall", // except for certain packages, to avoid circular dependencies. - if len(p.CgoFiles) > 0 && (!p.Standard || !cgoExclude[p.ImportPath]) { + if p.UsesCgo() && (!p.Standard || !cgoExclude[p.ImportPath]) { addImport("runtime/cgo") } - if len(p.CgoFiles) > 0 && (!p.Standard || !cgoSyscallExclude[p.ImportPath]) { + if p.UsesCgo() && (!p.Standard || !cgoSyscallExclude[p.ImportPath]) { addImport("syscall") } + // SWIG adds imports of some standard packages. + if p.UsesSwig() { + addImport("runtime/cgo") + addImport("syscall") + addImport("sync") + + // TODO: The .swig and .swigcxx files can use + // %go_import directives to import other packages. + } + // The linker loads implicit dependencies. if p.Name == "main" && !p.Internal.ForceLibrary { for _, dep := range LinkerDeps(p) { -- 2.50.0