Commit 63f8cca9 authored by Robert Griesemer's avatar Robert Griesemer

go/internal/srcimporter: return (possibly incomplete) package in case of error

For #16088.

Change-Id: I0ff480e95ef5af375be2ccc655f8b233a7bcd39d
Reviewed-on: https://go-review.googlesource.com/37755Reviewed-by: 's avatarAlan Donovan <adonovan@google.com>
parent 2ad7453b
...@@ -93,10 +93,11 @@ func (p *Importer) ImportFrom(path, srcDir string, mode types.ImportMode) (*type ...@@ -93,10 +93,11 @@ func (p *Importer) ImportFrom(path, srcDir string, mode types.ImportMode) (*type
return nil, fmt.Errorf("import cycle through package %q", bp.ImportPath) return nil, fmt.Errorf("import cycle through package %q", bp.ImportPath)
} }
if !pkg.Complete() { if !pkg.Complete() {
// package exists but is not complete - we cannot handle this // Package exists but is not complete - we cannot handle this
// at the moment since the source importer replaces the package // at the moment since the source importer replaces the package
// wholesale rather than augmenting it (see #19337 for details) // wholesale rather than augmenting it (see #19337 for details).
return nil, fmt.Errorf("reimported partially imported package %q", bp.ImportPath) // Return incomplete package with error (see #16088).
return pkg, fmt.Errorf("reimported partially imported package %q", bp.ImportPath)
} }
return pkg, nil return pkg, nil
} }
...@@ -135,7 +136,8 @@ func (p *Importer) ImportFrom(path, srcDir string, mode types.ImportMode) (*type ...@@ -135,7 +136,8 @@ func (p *Importer) ImportFrom(path, srcDir string, mode types.ImportMode) (*type
} }
pkg, err = conf.Check(bp.ImportPath, p.fset, files, nil) pkg, err = conf.Check(bp.ImportPath, p.fset, files, nil)
if err != nil { if err != nil {
return nil, fmt.Errorf("type-checking package %q failed (%v)", bp.ImportPath, err) // return (possibly nil or incomplete) package with error (see #16088)
return pkg, fmt.Errorf("type-checking package %q failed (%v)", bp.ImportPath, err)
} }
p.packages[bp.ImportPath] = pkg p.packages[bp.ImportPath] = pkg
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment