1
0
mirror of https://github.com/golang/go synced 2024-11-24 07:50:13 -07:00

go/types: change local gotype command to use source importer

Also: Remove -gccgo flag (not supported after 1.5), minor
cleanups.

Change-Id: I625241b07b277ac50ff836e2230b7b285887d35e
Reviewed-on: https://go-review.googlesource.com/37654
Reviewed-by: Alan Donovan <adonovan@google.com>
This commit is contained in:
Robert Griesemer 2017-03-01 14:20:27 -08:00
parent 13c35a1b20
commit 4be4da6331

View File

@ -21,6 +21,10 @@ package.
Otherwise, each path must be the filename of Go file belonging to Otherwise, each path must be the filename of Go file belonging to
the same package. the same package.
Imports are processed by importing directly from the source of
imported packages (default), or by importing from compiled and
installed packages (by setting -c to the respective compiler).
Usage: Usage:
gotype [flags] [path...] gotype [flags] [path...]
@ -32,11 +36,7 @@ The flags are:
-v -v
verbose mode verbose mode
-c -c
compiler used to compile packages (gc or gccgo); default: gc compiler used for installed packages (gc, gccgo, or source); default: source
(gotype based on Go1.5 and up only)
-gccgo
use gccimporter instead of gcimporter
(gotype based on Go1.4 and before only)
Debugging flags: Debugging flags:
-seq -seq
@ -90,7 +90,7 @@ var (
allFiles = flag.Bool("a", false, "use all (incl. _test.go) files when processing a directory") allFiles = flag.Bool("a", false, "use all (incl. _test.go) files when processing a directory")
allErrors = flag.Bool("e", false, "report all errors (not just the first 10)") allErrors = flag.Bool("e", false, "report all errors (not just the first 10)")
verbose = flag.Bool("v", false, "verbose mode") verbose = flag.Bool("v", false, "verbose mode")
gccgo = flag.Bool("gccgo", false, "use gccgoimporter instead of gcimporter") compiler = flag.String("c", "source", "compiler used for installed packages (gc, gccgo, or source)")
// debugging support // debugging support
sequential = flag.Bool("seq", false, "parse sequentially, rather than in parallel") sequential = flag.Bool("seq", false, "parse sequentially, rather than in parallel")
@ -103,7 +103,6 @@ var (
fset = token.NewFileSet() fset = token.NewFileSet()
errorCount = 0 errorCount = 0
parserMode parser.Mode parserMode parser.Mode
sizes types.Sizes
) )
func initParserMode() { func initParserMode() {
@ -118,18 +117,6 @@ func initParserMode() {
} }
} }
func initSizes() {
wordSize := 8
maxAlign := 8
switch build.Default.GOARCH {
case "386", "arm":
wordSize = 4
maxAlign = 4
// add more cases as needed
}
sizes = &types.StdSizes{WordSize: int64(wordSize), MaxAlign: int64(maxAlign)}
}
func usage() { func usage() {
fmt.Fprintln(os.Stderr, "usage: gotype [flags] [path ...]") fmt.Fprintln(os.Stderr, "usage: gotype [flags] [path ...]")
flag.PrintDefaults() flag.PrintDefaults()
@ -248,11 +235,9 @@ func getPkgFiles(args []string) ([]*ast.File, error) {
} }
func checkPkgFiles(files []*ast.File) { func checkPkgFiles(files []*ast.File) {
compiler := "gc"
if *gccgo {
compiler = "gccgo"
}
type bailout struct{} type bailout struct{}
// if checkPkgFiles is called multiple times, set up conf only once
conf := types.Config{ conf := types.Config{
FakeImportC: true, FakeImportC: true,
Error: func(err error) { Error: func(err error) {
@ -261,8 +246,8 @@ func checkPkgFiles(files []*ast.File) {
} }
report(err) report(err)
}, },
Importer: importer.For(compiler, nil), Importer: importer.For(*compiler, nil),
Sizes: sizes, Sizes: types.SizesFor(build.Default.GOARCH),
} }
defer func() { defer func() {
@ -301,7 +286,6 @@ func main() {
*sequential = true *sequential = true
} }
initParserMode() initParserMode()
initSizes()
start := time.Now() start := time.Now()