mirror of
https://github.com/golang/go
synced 2024-10-01 06:28:35 -06:00
The Go programming language
d6e83e534d
Prior to this change, the loader made the simplifying assumption that an import path is equal to a package path, that is, a subdirectory of src/. (This assumption was already false because relative imports "../foo" are possible, though discouraged.) Now, an import "foo" may denote "a/vendor/foo" or "b/vendor/foo" depending on whether it appears beneath a/ or b/. Thus import paths and package paths are no longer the same, and the directory containing an import declaration is a necessary input to the import resolution function. This change makes the loader hygienic w.r.t. the directory of each import declaration, and cleans up the terminology. The only API change is to the FindPackage hook, which most clients never use. Details: - Add a 'fromDir string' parameter to the FindPackage hook function. - Add a dir field to each PackageInfo. - doImport (called by go/types) now consists of two steps: use FindPackage(dir, importPath) to locate the package, then consult the import map using the canonical package path. Only the first step can fail. - Memoize FindPackage. - Simplify importInfo now that it no longer has to deal with errors. Replace a condition variable with a channel. - Use a separate type to report importErrors. - Rename loadAll to importAll - Delete the importMode constant. - Test. Change-Id: I3defab51bfa12b48b1511a2172fb48dc8e9150e6 Reviewed-on: https://go-review.googlesource.com/18053 Reviewed-by: Robert Griesemer <gri@golang.org> |
||
---|---|---|
benchmark/parse | ||
blog | ||
cmd | ||
container/intsets | ||
cover | ||
go | ||
godoc | ||
imports | ||
oracle | ||
playground | ||
present | ||
refactor | ||
.gitattributes | ||
.gitignore | ||
AUTHORS | ||
codereview.cfg | ||
CONTRIBUTING.md | ||
CONTRIBUTORS | ||
LICENSE | ||
PATENTS | ||
README |
This subrepository holds the source for various packages and tools that support the Go programming language. Some of the tools, godoc and vet for example, are included in binary Go distributions. Others, including the Go oracle and the test coverage tool, can be fetched with "go get". Packages include a type-checker for Go and an implementation of the Static Single Assignment form (SSA) representation for Go programs. To submit changes to this repository, see http://golang.org/doc/contribute.html.