mirror of
https://github.com/golang/go
synced 2024-11-20 03:04:40 -07:00
gotype: use go/types GcImporter
R=rsc CC=golang-dev https://golang.org/cl/4358043
This commit is contained in:
parent
a87382e7b3
commit
1baffa7da0
@ -11,6 +11,7 @@ import (
|
|||||||
"go/parser"
|
"go/parser"
|
||||||
"go/scanner"
|
"go/scanner"
|
||||||
"go/token"
|
"go/token"
|
||||||
|
"go/types"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
@ -170,13 +171,9 @@ func processFiles(filenames []string, allFiles bool) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// TODO(gri) Replace this with a fully functioning importer.
|
|
||||||
// For now a dummy importer is set up by gotype_test.go.
|
|
||||||
var importer ast.Importer
|
|
||||||
|
|
||||||
func processPackage(fset *token.FileSet, files map[string]*ast.File) {
|
func processPackage(fset *token.FileSet, files map[string]*ast.File) {
|
||||||
// make a package (resolve all identifiers)
|
// make a package (resolve all identifiers)
|
||||||
pkg, err := ast.NewPackage(fset, files, importer, universe)
|
pkg, err := ast.NewPackage(fset, files, types.GcImporter, types.Universe)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
report(err)
|
report(err)
|
||||||
return
|
return
|
||||||
@ -199,66 +196,3 @@ func main() {
|
|||||||
|
|
||||||
os.Exit(exitCode)
|
os.Exit(exitCode)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// TODO(gri) Move universe and its initialization in to the right package.
|
|
||||||
var universe *ast.Scope
|
|
||||||
|
|
||||||
func define(kind ast.ObjKind, names ...string) {
|
|
||||||
for _, name := range names {
|
|
||||||
obj := ast.NewObj(kind, name)
|
|
||||||
if universe.Insert(obj) != nil {
|
|
||||||
panic("gotype internal error: incorrect universe scope")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
universe = ast.NewScope(nil)
|
|
||||||
|
|
||||||
define(ast.Typ,
|
|
||||||
"bool",
|
|
||||||
"byte",
|
|
||||||
"complex64",
|
|
||||||
"complex128",
|
|
||||||
"float32",
|
|
||||||
"float64",
|
|
||||||
"int8",
|
|
||||||
"int16",
|
|
||||||
"int32",
|
|
||||||
"int64",
|
|
||||||
"string",
|
|
||||||
"uint8",
|
|
||||||
"uint16",
|
|
||||||
"uint32",
|
|
||||||
"uint64",
|
|
||||||
"int",
|
|
||||||
"uint",
|
|
||||||
"uintptr",
|
|
||||||
)
|
|
||||||
|
|
||||||
define(ast.Con,
|
|
||||||
"true",
|
|
||||||
"false",
|
|
||||||
"iota",
|
|
||||||
"nil",
|
|
||||||
)
|
|
||||||
|
|
||||||
define(ast.Fun,
|
|
||||||
"append",
|
|
||||||
"cap",
|
|
||||||
"close",
|
|
||||||
"complex",
|
|
||||||
"copy",
|
|
||||||
"imag",
|
|
||||||
"len",
|
|
||||||
"make",
|
|
||||||
"new",
|
|
||||||
"panic",
|
|
||||||
"print",
|
|
||||||
"println",
|
|
||||||
"real",
|
|
||||||
"recover",
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
@ -5,26 +5,16 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"go/ast"
|
|
||||||
"os"
|
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"runtime"
|
"runtime"
|
||||||
"path"
|
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
func testImporter(importPath string) (string, *ast.Scope, os.Error) {
|
|
||||||
_, pkgName := path.Split(importPath) // filename is package name for std library
|
|
||||||
return pkgName, ast.NewScope(nil), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
func runTest(t *testing.T, path, pkg string) {
|
func runTest(t *testing.T, path, pkg string) {
|
||||||
exitCode = 0
|
exitCode = 0
|
||||||
*pkgName = pkg
|
*pkgName = pkg
|
||||||
*recursive = false
|
*recursive = false
|
||||||
importer = testImporter
|
|
||||||
|
|
||||||
if pkg == "" {
|
if pkg == "" {
|
||||||
processFiles([]string{path}, true)
|
processFiles([]string{path}, true)
|
||||||
@ -47,9 +37,11 @@ var tests = []struct {
|
|||||||
|
|
||||||
// directories
|
// directories
|
||||||
{filepath.Join(runtime.GOROOT(), "src/pkg/go/ast"), "ast"},
|
{filepath.Join(runtime.GOROOT(), "src/pkg/go/ast"), "ast"},
|
||||||
|
{filepath.Join(runtime.GOROOT(), "src/pkg/go/doc"), "doc"},
|
||||||
{filepath.Join(runtime.GOROOT(), "src/pkg/go/token"), "scanner"},
|
{filepath.Join(runtime.GOROOT(), "src/pkg/go/token"), "scanner"},
|
||||||
{filepath.Join(runtime.GOROOT(), "src/pkg/go/scanner"), "scanner"},
|
{filepath.Join(runtime.GOROOT(), "src/pkg/go/scanner"), "scanner"},
|
||||||
{filepath.Join(runtime.GOROOT(), "src/pkg/go/parser"), "parser"},
|
{filepath.Join(runtime.GOROOT(), "src/pkg/go/parser"), "parser"},
|
||||||
|
{filepath.Join(runtime.GOROOT(), "src/pkg/go/types"), "types"},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user