Skip to content
This repository was archived by the owner on Apr 30, 2022. It is now read-only.

Commit bdec59e

Browse files
committed
Fixes required for go1.6
1 parent 5a18a6f commit bdec59e

File tree

2 files changed

+25
-12
lines changed

2 files changed

+25
-12
lines changed

stmt.go

+13-8
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,33 @@
22
// Use of this source code is governed by a BSD-style
33
// license that can be found in the LICENSE file.
44

5+
// go/importer is only available in go1.6 and later
6+
// +build go1.6
7+
58
package eval
69

710
import (
811
"go/ast"
912
"go/build"
13+
"go/importer"
1014
"go/parser"
1115
"go/token"
16+
"go/types"
1217
"log"
1318
"math/big"
1419
"path/filepath"
1520
"strconv"
16-
17-
"golang.org/x/tools/go/types"
1821
)
1922

2023
const (
2124
returnPC = ^uint(0)
2225
badPC = ^uint(1)
2326
)
2427

28+
// default importer of packages
29+
var g_importer types.Importer = importer.Default()
30+
31+
2532
/*
2633
* Statement compiler
2734
*/
@@ -387,10 +394,8 @@ func (a *stmtCompiler) compileImportDecl(decl *ast.GenDecl) {
387394
if spec.Name != nil {
388395
n = spec.Name.Name
389396
}
390-
//FIXME: this 'imports' object should be a member of stmtCompiler
391-
// (or even to 'compiler' ?)
392-
imports := make(map[string]*types.Package)
393-
pkg, err := srcImporter(imports, path)
397+
398+
pkg, err := srcImporter(g_importer, path)
394399
if err != nil {
395400
a.diagAt(spec.Pos(), "could not import package [%s]: %v",
396401
path, err)
@@ -1397,6 +1402,6 @@ func findPkgFiles(path string) ([]*ast.File, error) {
13971402
}
13981403

13991404
// srcImporter implements the ast.Importer signature.
1400-
func srcImporter(imports map[string]*types.Package, path string) (pkg *types.Package, err error) {
1401-
return types.DefaultImport(imports, path)
1405+
func srcImporter(typesImporter types.Importer, path string) (pkg *types.Package, err error) {
1406+
return typesImporter.Import(path)
14021407
}

world.go

+12-4
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,32 @@
55
// Package eval is the beginning of an interpreter for Go.
66
// It can run simple Go programs but does not implement
77
// interface values or packages.
8+
9+
// go/importer is only available in go1.6 and later
10+
// +build go1.6
11+
812
package eval
913

1014
import (
1115
"errors"
1216
"fmt"
1317
"go/ast"
18+
"go/importer"
1419
"go/parser"
1520
"go/scanner"
1621
"go/token"
22+
"go/types"
1723
"regexp"
1824
"strconv"
19-
20-
_ "golang.org/x/tools/go/gcimporter"
21-
"golang.org/x/tools/go/types"
2225
)
2326

2427
// track the status of each package we visit (unvisited/visiting/done)
2528
var g_visiting = make(map[string]status)
2629

30+
// config used for type checking
31+
var g_typesConfig = types.Config{Importer: importer.Default()}
32+
33+
2734
type status int // status for visiting map
2835
const (
2936
unvisited status = iota
@@ -72,8 +79,9 @@ func (w *World) CompilePackage(fset *token.FileSet, files []*ast.File, pkgpath s
7279
for _, f := range files {
7380
pkgFiles[f.Name.Name] = f
7481
}
82+
7583
//pkg, err := ast.NewPackage(fset, pkgFiles, srcImporter, types.Universe)
76-
pkg, err := types.Check(files[0].Name.String(), fset, files)
84+
pkg, err := g_typesConfig.Check(files[0].Name.String(), fset, files, nil)
7785
if err != nil {
7886
return nil, err
7987
}

0 commit comments

Comments
 (0)