Skip to content

Commit

Permalink
go/internal/srcimporter: return (possibly incomplete) package in case…
Browse files Browse the repository at this point in the history
… of error

For #16088.

Change-Id: I0ff480e95ef5af375be2ccc655f8b233a7bcd39d
Reviewed-on: https://go-review.googlesource.com/37755
Reviewed-by: Alan Donovan <[email protected]>
  • Loading branch information
griesemer committed Mar 6, 2017
1 parent 2ad7453 commit 63f8cca
Showing 1 changed file with 6 additions and 4 deletions.
10 changes: 6 additions & 4 deletions src/go/internal/srcimporter/srcimporter.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
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
// wholesale rather than augmenting it (see #19337 for details)
return nil, fmt.Errorf("reimported partially imported package %q", bp.ImportPath)
// wholesale rather than augmenting it (see #19337 for details).
// Return incomplete package with error (see #16088).
return pkg, fmt.Errorf("reimported partially imported package %q", bp.ImportPath)
}
return pkg, nil
}
Expand Down Expand Up @@ -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)
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
Expand Down

0 comments on commit 63f8cca

Please sign in to comment.