-
Notifications
You must be signed in to change notification settings - Fork 18.4k
Closed
Labels
Milestone
Description
This issue is present in the latest commit on master branch, f34964e.
MultiplePackageError is defined in src/go/build/build.go#L420-L426 with Dir, then Packages, and finally Files:
// MultiplePackageError describes a directory containing
// multiple buildable Go source files for multiple packages.
type MultiplePackageError struct {
Dir string // directory containing files
Packages []string // package names found
Files []string // corresponding files: Files[i] declares package Packages[i]
}It is used in the following incorrect way in src/go/build/build.go#L690-L692:
} else if pkg != p.Name {
return p, &MultiplePackageError{p.Dir, []string{firstFile, name}, []string{p.Name, pkg}}
}If one rewrites that composite literal to use keyed fields, the mistake becomes obvious:
return p, &MultiplePackageError{
Dir: p.Dir,
Packages: []string{firstFile, name}, // Packages being set to filenames.
Files: []string{p.Name, pkg}, // Files being set to package names.
}Notably, the last 2 parameter values should be swapped.