On Friday, 23 December 2016 14:01:15 UTC-5, mhh...@gmail.com wrote:
>
> Hi,
>
> i m looking for the right way to load and parse an ast.ImportSpec 
> referenced into an ast.File object.
>
> Its mostly about the path resolution, I can t find a method like
>
> parse(baseDir string, pkgPath string)...
>
> where baseDir (is not necessarily the same as the ast.File path, in my 
> understanding) would be the directory which may contain the vendor folder, 
> and pkgPath something like `go/ast`.
>
> Or maybe its ok to just test that the directory exists at,
> - baseDir / vendor / pkgPath
> - goroot / src / pkgPath
> ?
>
> Seems to me its a bit more complex than that.
>

Indeed it is. The interpretation of an import path string depends on the 
build tool.  Most open-source Go projects use the 'go build' command and 
its conventions for workspace layout. The core of this tool is exposed as a 
library in the standard "go/build" package.  Its build.Context type 
abstracts a workspace, and most applications use the default value 
build.Default to find packages relative to the directories specified by the 
GOROOT and GOPATH environment variables.  The (*Context).Import function 
locates a package given its import path:

    https://golang.org/pkg/go/build/#Context.Import

This function returns a build.Package, from which you can find the set of 
source files that make up the package.

Most applications must either recursively process source code for imported 
packages, or load type information from export data files (.a) written by 
the compiler.  For source, use the golang.org/x/tools/go/loader package. 
 For export data, use golang.org/x/tools/go/gcexportdata.  See the examples 
in each package for details.  There is a also a tutorial for the type 
checker at htps://github.com/golang/example/tree/master/gotypes.
<https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#>

<https://webcache.googleusercontent.com/search?q=cache:cbCcFxv6mjwJ:https://github.com/golang/example/tree/master/gotypes+&cd=1&hl=en&ct=clnk&gl=us>
<https://www.google.com/search?espv=2&biw=1128&bih=603&q=related:https://github.com/golang/example/tree/master/gotypes+go+types+tutorial&tbo=1&sa=X&ved=0ahUKEwi0uOOhxo_RAhXISyYKHXSqBKYQHwghMAA>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to