tools/go
Alan Donovan d6e83e534d go/loader: changes for vendor support
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>
2015-12-22 18:31:24 +00:00
..
ast/astutil go/ast/astutil: set Pos for import name 2015-05-19 23:10:16 +00:00
buildutil go/buildutil: changes for vendor support 2015-12-18 20:00:43 +00:00
callgraph go/ssa: rename some API features (incompatible change) 2015-08-31 22:20:12 +00:00
exact tools: add import comments. 2014-12-09 22:42:16 +00:00
gccgoimporter x/tools: disable tests not supported on Android 2015-08-06 00:36:03 +00:00
gcimporter go/types: change {Type,Object,Selection}String to accept a Qualifier function 2015-06-30 19:00:00 +00:00
importer go/types: unexport UniverseByte/Rune; make Typ a slice 2015-07-21 18:42:36 +00:00
loader go/loader: changes for vendor support 2015-12-22 18:31:24 +00:00
pointer go/pointer: fix bug in constraint generation of "for _, v := range map" 2015-10-26 16:28:05 +00:00
ssa go/ssa: fix crash when building map[*struct{}]bool{{}: true} 2015-11-23 19:08:17 +00:00
types go/types: fix build 2015-12-14 01:42:23 +00:00
vcs go/vcs: fix doc typos 2015-10-10 23:46:02 +00:00