Commit Graph

5 Commits

Author SHA1 Message Date
Dmitri Shuralyov 7f22187876 go/loader: document that package is deprecated
By now, go/packages is ready for widespread use and has obsoleted
go/loader. CL 141684 and CL 155237 removed warnings from go/packages
documentation. Add a deprecation notice to go/loader for visibility.

Modify the deprecation notice in other packages to be consistent with
the deprecation convention as documented at golang.org/wiki/Deprecated.

Change-Id: Iaa93205a6e5beb3ec95f87a6d9d42f0b8ffe8e80
Reviewed-on: https://go-review.googlesource.com/c/tools/+/183418
Reviewed-by: Michael Matloob <matloob@golang.org>
2019-06-24 19:02:45 +00:00
Alan Donovan 9aae8f06b5 go/loader: update comment
CL 18580 (Jan 12) made the loader cache non-blocking.

Change-Id: I8f280dbd405bd9b19a201191a4a987f13d862300
Reviewed-on: https://go-review.googlesource.com/19830
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-02-22 20:28:10 +00:00
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
Alan Donovan 9c57c19a58 go/loader: eliminate ImportFromBinary option and PackageCreated hook
The loader package now loads, parses, and type-checks a whole program
from source, and that is all.

Also:
- simplified loader logic
- ssa.Create is gone; use ssautil.CreateProgram.
- ssautil.LoadPackage renamed to BuildPackage.
  It is now independent of go/types' Import hook and the Packages map.
- ssadump: -importbin flag removed.
  The value of this flag was that it caused the tool to print IR
  for only a single package; this is now the normal behaviour.

Fixes #9955

Change-Id: I4571118258ab1a46dccece3241b7dc51401a3acc
Reviewed-on: https://go-review.googlesource.com/8953
Reviewed-by: Robert Griesemer <gri@golang.org>
2015-04-17 18:58:17 +00:00
Alan Donovan 1b6275a2ec go/loader: API examples
Also: make it easier to find packages.  Hide the importMap field
(never used) and expose a (*Program).Package method which searches
importMap and then Created.

Also: move huge comments into doc.go.

Change-Id: Iad96a12524b7c41ad9acd1e806af23171e71fa7c
Reviewed-on: https://go-review.googlesource.com/9030
Reviewed-by: Robert Griesemer <gri@golang.org>
2015-04-17 18:50:18 +00:00