Skip to content

Commit cf0b29e

Browse files
committed
Restore behavior of setting importError in Compile.
This is needed to restore the fix for #119.
1 parent 398e7dc commit cf0b29e

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

compiler/package.go

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -69,15 +69,15 @@ func NewImportContext(importFunc func(string) (*Archive, error)) *ImportContext
6969
// packageImporter implements go/types.Importer interface.
7070
type packageImporter struct {
7171
importContext *ImportContext
72+
importError *error // A pointer to importError in Compile.
7273
}
7374

7475
func (pi packageImporter) Import(path string) (*types.Package, error) {
7576
if _, err := pi.importContext.Import(path); err != nil {
76-
// TODO: Figure out if setting importError here is still needed; if so, preserve this behavior.
77-
// It's needed to resolve https://github.com/gopherjs/gopherjs/issues/119.
78-
/*if importError == nil {
79-
importError = err
80-
}*/
77+
if *pi.importError == nil {
78+
// If import failed, show first error of import only (https://github.com/gopherjs/gopherjs/issues/119).
79+
*pi.importError = err
80+
}
8181
return nil, err
8282
}
8383
return pi.importContext.Packages[path], nil
@@ -97,8 +97,11 @@ func Compile(importPath string, files []*ast.File, fileSet *token.FileSet, impor
9797
var errList ErrorList
9898
var previousErr error
9999
config := &types.Config{
100-
Importer: packageImporter{importContext: importContext},
101-
Sizes: sizes32,
100+
Importer: packageImporter{
101+
importContext: importContext,
102+
importError: &importError,
103+
},
104+
Sizes: sizes32,
102105
Error: func(err error) {
103106
if previousErr != nil && previousErr.Error() == err.Error() {
104107
return

0 commit comments

Comments
 (0)