From: Robert Griesemer Date: Wed, 28 Jun 2017 22:04:47 +0000 (-0700) Subject: go/importer: don't return packages that are not fully type-checked X-Git-Tag: go1.9rc1~132 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=773504aee53eb8229f5e78db36258cc6bb389199;p=gostls13.git go/importer: don't return packages that are not fully type-checked Fixes #20837. Change-Id: I266519c26c8849da267b77e11abe7734d8275112 Reviewed-on: https://go-review.googlesource.com/47074 Reviewed-by: Matthew Dempsky --- diff --git a/src/go/internal/srcimporter/srcimporter.go b/src/go/internal/srcimporter/srcimporter.go index f259493fc7..50cf361dbb 100644 --- a/src/go/internal/srcimporter/srcimporter.go +++ b/src/go/internal/srcimporter/srcimporter.go @@ -136,8 +136,11 @@ func (p *Importer) ImportFrom(path, srcDir string, mode types.ImportMode) (*type } pkg, err = conf.Check(bp.ImportPath, p.fset, files, nil) if err != nil { - // return (possibly nil or incomplete) package with error (see #16088) - return pkg, fmt.Errorf("type-checking package %q failed (%v)", bp.ImportPath, err) + // Type-checking stops after the first error (types.Config.Error is not set), + // so the returned package is very likely incomplete. Don't return it since + // we don't know its condition: It's very likely unsafe to use and it's also + // not added to p.packages which may cause further problems (issue #20837). + return nil, fmt.Errorf("type-checking package %q failed (%v)", bp.ImportPath, err) } p.packages[bp.ImportPath] = pkg