mirror of
https://github.com/golang/go.git
synced 2025-05-05 23:53:05 +00:00
tools: updates for minimum Go version 1.6
Details: - remove go1.5 "default version" labels on most files - remove go1.6 labels on a few files - go/loader: use conf.Cwd not "." in a couple places; update faulty test expectations. (Not sure why this wasn't caught sooner.) - go/ssa/interp: add 'mono' result to time.now intrinsic - go/gcimporter15/bimport.go: make consistent with the version in gc - go/ssa/interp: update test error message - go/ssa: update a comment The go/gcimporter15/bexport.go logic is stale and needs to be brought up to date. Needs a separate CL since it's tricky. Tested on go1.6, go1.7, go1.8. Change-Id: I841189d30e131b7c49a4e8690ea7c40b55041bae Reviewed-on: https://go-review.googlesource.com/36540 Reviewed-by: Robert Griesemer <gri@golang.org>
This commit is contained in:
parent
69cfa78961
commit
b56ef30191
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
// ssadump: a tool for displaying and interpreting the SSA form of Go programs.
|
// ssadump: a tool for displaying and interpreting the SSA form of Go programs.
|
||||||
package main // import "golang.org/x/tools/cmd/ssadump"
|
package main // import "golang.org/x/tools/cmd/ssadump"
|
||||||
|
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
// Package cha computes the call graph of a Go program using the Class
|
// Package cha computes the call graph of a Go program using the Class
|
||||||
// Hierarchy Analysis (CHA) algorithm.
|
// Hierarchy Analysis (CHA) algorithm.
|
||||||
//
|
//
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
// No testdata on Android.
|
// No testdata on Android.
|
||||||
|
|
||||||
// +build !android
|
// +build !android
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
// This package provides Rapid Type Analysis (RTA) for Go, a fast
|
// This package provides Rapid Type Analysis (RTA) for Go, a fast
|
||||||
// algorithm for call graph construction and discovery of reachable code
|
// algorithm for call graph construction and discovery of reachable code
|
||||||
// (and hence dead code) and runtime types. The algorithm was first
|
// (and hence dead code) and runtime types. The algorithm was first
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
// No testdata on Android.
|
// No testdata on Android.
|
||||||
|
|
||||||
// +build !android
|
// +build !android
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package loader
|
package loader
|
||||||
|
|
||||||
// This file handles cgo preprocessing of files containing `import "C"`.
|
// This file handles cgo preprocessing of files containing `import "C"`.
|
||||||
|
@ -1,177 +0,0 @@
|
|||||||
// Copyright 2015 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build go1.5,!go1.6
|
|
||||||
// +build !windows
|
|
||||||
|
|
||||||
package loader_test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"go/token"
|
|
||||||
"log"
|
|
||||||
"path/filepath"
|
|
||||||
"runtime"
|
|
||||||
"sort"
|
|
||||||
"strings"
|
|
||||||
|
|
||||||
"golang.org/x/tools/go/loader"
|
|
||||||
)
|
|
||||||
|
|
||||||
func printProgram(prog *loader.Program) {
|
|
||||||
// Created packages are the initial packages specified by a call
|
|
||||||
// to CreateFromFilenames or CreateFromFiles.
|
|
||||||
var names []string
|
|
||||||
for _, info := range prog.Created {
|
|
||||||
names = append(names, info.Pkg.Path())
|
|
||||||
}
|
|
||||||
fmt.Printf("created: %s\n", names)
|
|
||||||
|
|
||||||
// Imported packages are the initial packages specified by a
|
|
||||||
// call to Import or ImportWithTests.
|
|
||||||
names = nil
|
|
||||||
for _, info := range prog.Imported {
|
|
||||||
if strings.Contains(info.Pkg.Path(), "internal") {
|
|
||||||
continue // skip, to reduce fragility
|
|
||||||
}
|
|
||||||
names = append(names, info.Pkg.Path())
|
|
||||||
}
|
|
||||||
sort.Strings(names)
|
|
||||||
fmt.Printf("imported: %s\n", names)
|
|
||||||
|
|
||||||
// InitialPackages contains the union of created and imported.
|
|
||||||
names = nil
|
|
||||||
for _, info := range prog.InitialPackages() {
|
|
||||||
names = append(names, info.Pkg.Path())
|
|
||||||
}
|
|
||||||
sort.Strings(names)
|
|
||||||
fmt.Printf("initial: %s\n", names)
|
|
||||||
|
|
||||||
// AllPackages contains all initial packages and their dependencies.
|
|
||||||
names = nil
|
|
||||||
for pkg := range prog.AllPackages {
|
|
||||||
names = append(names, pkg.Path())
|
|
||||||
}
|
|
||||||
sort.Strings(names)
|
|
||||||
fmt.Printf("all: %s\n", names)
|
|
||||||
}
|
|
||||||
|
|
||||||
func printFilenames(fset *token.FileSet, info *loader.PackageInfo) {
|
|
||||||
var names []string
|
|
||||||
for _, f := range info.Files {
|
|
||||||
names = append(names, filepath.Base(fset.File(f.Pos()).Name()))
|
|
||||||
}
|
|
||||||
fmt.Printf("%s.Files: %s\n", info.Pkg.Path(), names)
|
|
||||||
}
|
|
||||||
|
|
||||||
// This example loads a set of packages and all of their dependencies
|
|
||||||
// from a typical command-line. FromArgs parses a command line and
|
|
||||||
// makes calls to the other methods of Config shown in the examples that
|
|
||||||
// follow.
|
|
||||||
func ExampleConfig_FromArgs() {
|
|
||||||
args := []string{"mytool", "unicode/utf8", "errors", "runtime", "--", "foo", "bar"}
|
|
||||||
const wantTests = false
|
|
||||||
|
|
||||||
var conf loader.Config
|
|
||||||
rest, err := conf.FromArgs(args[1:], wantTests)
|
|
||||||
prog, err := conf.Load()
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
fmt.Printf("rest: %s\n", rest)
|
|
||||||
printProgram(prog)
|
|
||||||
// Output:
|
|
||||||
// rest: [foo bar]
|
|
||||||
// created: []
|
|
||||||
// imported: [errors runtime unicode/utf8]
|
|
||||||
// initial: [errors runtime unicode/utf8]
|
|
||||||
// all: [errors runtime unicode/utf8 unsafe]
|
|
||||||
}
|
|
||||||
|
|
||||||
// This example creates and type-checks a single package (without tests)
|
|
||||||
// from a list of filenames, and loads all of its dependencies.
|
|
||||||
func ExampleConfig_CreateFromFilenames() {
|
|
||||||
var conf loader.Config
|
|
||||||
filename := filepath.Join(runtime.GOROOT(), "src/container/heap/heap.go")
|
|
||||||
conf.CreateFromFilenames("container/heap", filename)
|
|
||||||
prog, err := conf.Load()
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
printProgram(prog)
|
|
||||||
// Output:
|
|
||||||
// created: [container/heap]
|
|
||||||
// imported: []
|
|
||||||
// initial: [container/heap]
|
|
||||||
// all: [container/heap sort]
|
|
||||||
}
|
|
||||||
|
|
||||||
// In the examples below, for stability, the chosen packages are
|
|
||||||
// relatively small, platform-independent, and low-level (and thus
|
|
||||||
// infrequently changing).
|
|
||||||
// The strconv package has internal and external tests.
|
|
||||||
|
|
||||||
const hello = `package main
|
|
||||||
|
|
||||||
import "fmt"
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
fmt.Println("Hello, world.")
|
|
||||||
}
|
|
||||||
`
|
|
||||||
|
|
||||||
// This example creates and type-checks a package from a list of
|
|
||||||
// already-parsed files, and loads all its dependencies.
|
|
||||||
func ExampleConfig_CreateFromFiles() {
|
|
||||||
var conf loader.Config
|
|
||||||
f, err := conf.ParseFile("hello.go", hello)
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
conf.CreateFromFiles("hello", f)
|
|
||||||
prog, err := conf.Load()
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
printProgram(prog)
|
|
||||||
printFilenames(prog.Fset, prog.Package("strconv"))
|
|
||||||
// Output:
|
|
||||||
// created: [hello]
|
|
||||||
// imported: []
|
|
||||||
// initial: [hello]
|
|
||||||
// all: [errors fmt hello io math os reflect runtime strconv sync sync/atomic syscall time unicode/utf8 unsafe]
|
|
||||||
// strconv.Files: [atob.go atof.go atoi.go decimal.go doc.go extfloat.go ftoa.go isprint.go itoa.go quote.go]
|
|
||||||
}
|
|
||||||
|
|
||||||
// This example imports three packages, including the tests for one of
|
|
||||||
// them, and loads all their dependencies.
|
|
||||||
func ExampleConfig_Import() {
|
|
||||||
// ImportWithTest("strconv") causes strconv to include
|
|
||||||
// internal_test.go, and creates an external test package,
|
|
||||||
// strconv_test.
|
|
||||||
// (Compare with the example of CreateFromFiles.)
|
|
||||||
|
|
||||||
var conf loader.Config
|
|
||||||
conf.Import("unicode/utf8")
|
|
||||||
conf.Import("errors")
|
|
||||||
conf.ImportWithTests("strconv")
|
|
||||||
prog, err := conf.Load()
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
printProgram(prog)
|
|
||||||
printFilenames(prog.Fset, prog.Package("strconv"))
|
|
||||||
printFilenames(prog.Fset, prog.Package("strconv_test"))
|
|
||||||
// Output:
|
|
||||||
// created: [strconv_test]
|
|
||||||
// imported: [errors strconv unicode/utf8]
|
|
||||||
// initial: [errors strconv strconv_test unicode/utf8]
|
|
||||||
// all: [bufio bytes errors flag fmt io log math math/rand os reflect runtime runtime/pprof runtime/trace sort strconv strconv_test strings sync sync/atomic syscall testing text/tabwriter time unicode unicode/utf8 unsafe]
|
|
||||||
// strconv.Files: [atob.go atof.go atoi.go decimal.go doc.go extfloat.go ftoa.go isprint.go itoa.go quote.go internal_test.go]
|
|
||||||
// strconv_test.Files: [atob_test.go atof_test.go atoi_test.go decimal_test.go example_test.go fp_test.go ftoa_test.go itoa_test.go quote_test.go strconv_test.go]
|
|
||||||
}
|
|
@ -1,13 +0,0 @@
|
|||||||
// Copyright 2013 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build go1.6
|
|
||||||
|
|
||||||
package loader
|
|
||||||
|
|
||||||
import "go/build"
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
ignoreVendor = build.IgnoreVendor
|
|
||||||
}
|
|
@ -1,12 +0,0 @@
|
|||||||
// Copyright 2013 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build go1.6
|
|
||||||
// +build !android
|
|
||||||
|
|
||||||
package loader_test
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
go16 = true
|
|
||||||
}
|
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package loader
|
package loader
|
||||||
|
|
||||||
// See doc.go for package documentation and implementation notes.
|
// See doc.go for package documentation and implementation notes.
|
||||||
@ -604,7 +602,7 @@ func (conf *Config) Load() (*Program, error) {
|
|||||||
|
|
||||||
// Create packages specified by conf.CreatePkgs.
|
// Create packages specified by conf.CreatePkgs.
|
||||||
for _, cp := range conf.CreatePkgs {
|
for _, cp := range conf.CreatePkgs {
|
||||||
files, errs := parseFiles(conf.fset(), conf.build(), nil, ".", cp.Filenames, conf.ParserMode)
|
files, errs := parseFiles(conf.fset(), conf.build(), nil, conf.Cwd, cp.Filenames, conf.ParserMode)
|
||||||
files = append(files, cp.Files...)
|
files = append(files, cp.Files...)
|
||||||
|
|
||||||
path := cp.Path
|
path := cp.Path
|
||||||
@ -616,7 +614,7 @@ func (conf *Config) Load() (*Program, error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dir := "."
|
dir := conf.Cwd
|
||||||
if len(files) > 0 && files[0].Pos().IsValid() {
|
if len(files) > 0 && files[0].Pos().IsValid() {
|
||||||
dir = filepath.Dir(conf.fset().File(files[0].Pos()).Name())
|
dir = filepath.Dir(conf.fset().File(files[0].Pos()).Name())
|
||||||
}
|
}
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
// No testdata on Android.
|
// No testdata on Android.
|
||||||
|
|
||||||
// +build !android
|
// +build !android
|
||||||
@ -26,8 +24,6 @@ import (
|
|||||||
"golang.org/x/tools/go/loader"
|
"golang.org/x/tools/go/loader"
|
||||||
)
|
)
|
||||||
|
|
||||||
var go16 bool // Go version >= go1.6
|
|
||||||
|
|
||||||
// TestFromArgs checks that conf.FromArgs populates conf correctly.
|
// TestFromArgs checks that conf.FromArgs populates conf correctly.
|
||||||
// It does no I/O.
|
// It does no I/O.
|
||||||
func TestFromArgs(t *testing.T) {
|
func TestFromArgs(t *testing.T) {
|
||||||
@ -400,10 +396,6 @@ func TestCwd(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestLoad_vendor(t *testing.T) {
|
func TestLoad_vendor(t *testing.T) {
|
||||||
if !go16 {
|
|
||||||
// TODO(adonovan): delete in due course.
|
|
||||||
t.Skipf("vendoring requires Go 1.6")
|
|
||||||
}
|
|
||||||
pkgs := map[string]string{
|
pkgs := map[string]string{
|
||||||
"a": `package a; import _ "x"`,
|
"a": `package a; import _ "x"`,
|
||||||
"a/vendor": ``, // mkdir a/vendor
|
"a/vendor": ``, // mkdir a/vendor
|
||||||
@ -437,10 +429,6 @@ func TestLoad_vendor(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestVendorCwd(t *testing.T) {
|
func TestVendorCwd(t *testing.T) {
|
||||||
if !go16 {
|
|
||||||
// TODO(adonovan): delete in due course.
|
|
||||||
t.Skipf("vendoring requires Go 1.6")
|
|
||||||
}
|
|
||||||
// Test the interaction of cwd and vendor directories.
|
// Test the interaction of cwd and vendor directories.
|
||||||
ctxt := fakeContext(map[string]string{
|
ctxt := fakeContext(map[string]string{
|
||||||
"net": ``, // mkdir net
|
"net": ``, // mkdir net
|
||||||
@ -454,8 +442,8 @@ func TestVendorCwd(t *testing.T) {
|
|||||||
}{
|
}{
|
||||||
{cwd: "/go/src/net", arg: "http"}, // not found
|
{cwd: "/go/src/net", arg: "http"}, // not found
|
||||||
{cwd: "/go/src/net", arg: "./http", want: "net/http vendor/hpack"},
|
{cwd: "/go/src/net", arg: "./http", want: "net/http vendor/hpack"},
|
||||||
{cwd: "/go/src/net", arg: "hpack", want: "hpack"},
|
{cwd: "/go/src/net", arg: "hpack", want: "vendor/hpack"},
|
||||||
{cwd: "/go/src/vendor", arg: "hpack", want: "hpack"},
|
{cwd: "/go/src/vendor", arg: "hpack", want: "vendor/hpack"},
|
||||||
{cwd: "/go/src/vendor", arg: "./hpack", want: "vendor/hpack"},
|
{cwd: "/go/src/vendor", arg: "./hpack", want: "vendor/hpack"},
|
||||||
} {
|
} {
|
||||||
conf := loader.Config{
|
conf := loader.Config{
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package loader_test
|
package loader_test
|
||||||
|
|
||||||
// This file enumerates all packages beneath $GOROOT, loads them, plus
|
// This file enumerates all packages beneath $GOROOT, loads them, plus
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package pointer
|
package pointer
|
||||||
|
|
||||||
// This file defines the main datatypes and Analyze function of the pointer analysis.
|
// This file defines the main datatypes and Analyze function of the pointer analysis.
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package pointer
|
package pointer
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package pointer
|
package pointer
|
||||||
|
|
||||||
import "go/types"
|
import "go/types"
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
||||||
Package pointer implements Andersen's analysis, an inclusion-based
|
Package pointer implements Andersen's analysis, an inclusion-based
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package pointer
|
package pointer
|
||||||
|
|
||||||
// This file defines the constraint generation phase.
|
// This file defines the constraint generation phase.
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package pointer
|
package pointer
|
||||||
|
|
||||||
// This file implements Hash-Value Numbering (HVN), a pre-solver
|
// This file implements Hash-Value Numbering (HVN), a pre-solver
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package pointer
|
package pointer
|
||||||
|
|
||||||
// This package defines the treatment of intrinsics, i.e. library
|
// This package defines the treatment of intrinsics, i.e. library
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package pointer
|
package pointer
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
// No testdata on Android.
|
// No testdata on Android.
|
||||||
|
|
||||||
// +build !android
|
// +build !android
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package pointer
|
package pointer
|
||||||
|
|
||||||
// This file implements the generation and resolution rules for
|
// This file implements the generation and resolution rules for
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package pointer
|
package pointer
|
||||||
|
|
||||||
// This file defines a naive Andersen-style solver for the inclusion
|
// This file defines a naive Andersen-style solver for the inclusion
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package pointer
|
package pointer
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package ssa_test
|
package ssa_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.6
|
|
||||||
|
|
||||||
package ssa
|
package ssa
|
||||||
|
|
||||||
// This file defines the Const SSA value type.
|
// This file defines the Const SSA value type.
|
||||||
|
@ -1,171 +0,0 @@
|
|||||||
// Copyright 2013 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build go1.5,!go1.6
|
|
||||||
|
|
||||||
package ssa
|
|
||||||
|
|
||||||
// This file defines the Const SSA value type.
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
exact "go/constant"
|
|
||||||
"go/token"
|
|
||||||
"go/types"
|
|
||||||
"strconv"
|
|
||||||
)
|
|
||||||
|
|
||||||
// NewConst returns a new constant of the specified value and type.
|
|
||||||
// val must be valid according to the specification of Const.Value.
|
|
||||||
//
|
|
||||||
func NewConst(val exact.Value, typ types.Type) *Const {
|
|
||||||
return &Const{typ, val}
|
|
||||||
}
|
|
||||||
|
|
||||||
// intConst returns an 'int' constant that evaluates to i.
|
|
||||||
// (i is an int64 in case the host is narrower than the target.)
|
|
||||||
func intConst(i int64) *Const {
|
|
||||||
return NewConst(exact.MakeInt64(i), tInt)
|
|
||||||
}
|
|
||||||
|
|
||||||
// nilConst returns a nil constant of the specified type, which may
|
|
||||||
// be any reference type, including interfaces.
|
|
||||||
//
|
|
||||||
func nilConst(typ types.Type) *Const {
|
|
||||||
return NewConst(nil, typ)
|
|
||||||
}
|
|
||||||
|
|
||||||
// stringConst returns a 'string' constant that evaluates to s.
|
|
||||||
func stringConst(s string) *Const {
|
|
||||||
return NewConst(exact.MakeString(s), tString)
|
|
||||||
}
|
|
||||||
|
|
||||||
// zeroConst returns a new "zero" constant of the specified type,
|
|
||||||
// which must not be an array or struct type: the zero values of
|
|
||||||
// aggregates are well-defined but cannot be represented by Const.
|
|
||||||
//
|
|
||||||
func zeroConst(t types.Type) *Const {
|
|
||||||
switch t := t.(type) {
|
|
||||||
case *types.Basic:
|
|
||||||
switch {
|
|
||||||
case t.Info()&types.IsBoolean != 0:
|
|
||||||
return NewConst(exact.MakeBool(false), t)
|
|
||||||
case t.Info()&types.IsNumeric != 0:
|
|
||||||
return NewConst(exact.MakeInt64(0), t)
|
|
||||||
case t.Info()&types.IsString != 0:
|
|
||||||
return NewConst(exact.MakeString(""), t)
|
|
||||||
case t.Kind() == types.UnsafePointer:
|
|
||||||
fallthrough
|
|
||||||
case t.Kind() == types.UntypedNil:
|
|
||||||
return nilConst(t)
|
|
||||||
default:
|
|
||||||
panic(fmt.Sprint("zeroConst for unexpected type:", t))
|
|
||||||
}
|
|
||||||
case *types.Pointer, *types.Slice, *types.Interface, *types.Chan, *types.Map, *types.Signature:
|
|
||||||
return nilConst(t)
|
|
||||||
case *types.Named:
|
|
||||||
return NewConst(zeroConst(t.Underlying()).Value, t)
|
|
||||||
case *types.Array, *types.Struct, *types.Tuple:
|
|
||||||
panic(fmt.Sprint("zeroConst applied to aggregate:", t))
|
|
||||||
}
|
|
||||||
panic(fmt.Sprint("zeroConst: unexpected ", t))
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *Const) RelString(from *types.Package) string {
|
|
||||||
var s string
|
|
||||||
if c.Value == nil {
|
|
||||||
s = "nil"
|
|
||||||
} else if c.Value.Kind() == exact.String {
|
|
||||||
s = exact.StringVal(c.Value)
|
|
||||||
const max = 20
|
|
||||||
// TODO(adonovan): don't cut a rune in half.
|
|
||||||
if len(s) > max {
|
|
||||||
s = s[:max-3] + "..." // abbreviate
|
|
||||||
}
|
|
||||||
s = strconv.Quote(s)
|
|
||||||
} else {
|
|
||||||
s = c.Value.String()
|
|
||||||
}
|
|
||||||
return s + ":" + relType(c.Type(), from)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *Const) Name() string {
|
|
||||||
return c.RelString(nil)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *Const) String() string {
|
|
||||||
return c.Name()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *Const) Type() types.Type {
|
|
||||||
return c.typ
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *Const) Referrers() *[]Instruction {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *Const) Parent() *Function { return nil }
|
|
||||||
|
|
||||||
func (c *Const) Pos() token.Pos {
|
|
||||||
return token.NoPos
|
|
||||||
}
|
|
||||||
|
|
||||||
// IsNil returns true if this constant represents a typed or untyped nil value.
|
|
||||||
func (c *Const) IsNil() bool {
|
|
||||||
return c.Value == nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO(adonovan): move everything below into golang.org/x/tools/go/ssa/interp.
|
|
||||||
|
|
||||||
// Int64 returns the numeric value of this constant truncated to fit
|
|
||||||
// a signed 64-bit integer.
|
|
||||||
//
|
|
||||||
func (c *Const) Int64() int64 {
|
|
||||||
switch x := c.Value; x.Kind() {
|
|
||||||
case exact.Int:
|
|
||||||
if i, ok := exact.Int64Val(x); ok {
|
|
||||||
return i
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
case exact.Float:
|
|
||||||
f, _ := exact.Float64Val(x)
|
|
||||||
return int64(f)
|
|
||||||
}
|
|
||||||
panic(fmt.Sprintf("unexpected constant value: %T", c.Value))
|
|
||||||
}
|
|
||||||
|
|
||||||
// Uint64 returns the numeric value of this constant truncated to fit
|
|
||||||
// an unsigned 64-bit integer.
|
|
||||||
//
|
|
||||||
func (c *Const) Uint64() uint64 {
|
|
||||||
switch x := c.Value; x.Kind() {
|
|
||||||
case exact.Int:
|
|
||||||
if u, ok := exact.Uint64Val(x); ok {
|
|
||||||
return u
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
case exact.Float:
|
|
||||||
f, _ := exact.Float64Val(x)
|
|
||||||
return uint64(f)
|
|
||||||
}
|
|
||||||
panic(fmt.Sprintf("unexpected constant value: %T", c.Value))
|
|
||||||
}
|
|
||||||
|
|
||||||
// Float64 returns the numeric value of this constant truncated to fit
|
|
||||||
// a float64.
|
|
||||||
//
|
|
||||||
func (c *Const) Float64() float64 {
|
|
||||||
f, _ := exact.Float64Val(c.Value)
|
|
||||||
return f
|
|
||||||
}
|
|
||||||
|
|
||||||
// Complex128 returns the complex value of this constant truncated to
|
|
||||||
// fit a complex128.
|
|
||||||
//
|
|
||||||
func (c *Const) Complex128() complex128 {
|
|
||||||
re, _ := exact.Float64Val(exact.Real(c.Value))
|
|
||||||
im, _ := exact.Float64Val(exact.Imag(c.Value))
|
|
||||||
return complex(re, im)
|
|
||||||
}
|
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package ssa
|
package ssa
|
||||||
|
|
||||||
// Helpers for emitting SSA instructions.
|
// Helpers for emitting SSA instructions.
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package ssa_test
|
package ssa_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package ssa
|
package ssa
|
||||||
|
|
||||||
// This file implements the Function and BasicBlock types.
|
// This file implements the Function and BasicBlock types.
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package interp
|
package interp
|
||||||
|
|
||||||
// Emulated functions that we cannot interpret because they are
|
// Emulated functions that we cannot interpret because they are
|
||||||
@ -450,7 +448,7 @@ func ext۰testing۰runExample(fr *frame, args []value) value {
|
|||||||
|
|
||||||
func ext۰time۰now(fr *frame, args []value) value {
|
func ext۰time۰now(fr *frame, args []value) value {
|
||||||
nano := time.Now().UnixNano()
|
nano := time.Now().UnixNano()
|
||||||
return tuple{int64(nano / 1e9), int32(nano % 1e9)}
|
return tuple{int64(nano / 1e9), int32(nano % 1e9), 0}
|
||||||
}
|
}
|
||||||
|
|
||||||
func ext۰time۰Sleep(fr *frame, args []value) value {
|
func ext۰time۰Sleep(fr *frame, args []value) value {
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
// Package ssa/interp defines an interpreter for the SSA
|
// Package ssa/interp defines an interpreter for the SSA
|
||||||
// representation of Go programs.
|
// representation of Go programs.
|
||||||
//
|
//
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
// +build linux darwin
|
// +build linux darwin
|
||||||
|
|
||||||
package interp_test
|
package interp_test
|
||||||
@ -246,7 +244,7 @@ func run(t *testing.T, dir, input string, success successPredicate) bool {
|
|||||||
var out bytes.Buffer
|
var out bytes.Buffer
|
||||||
interp.CapturedOutput = &out
|
interp.CapturedOutput = &out
|
||||||
|
|
||||||
hint = fmt.Sprintf("To trace execution, run:\n%% go build golang.org/x/tools/cmd/ssadump && ./ssadump -build=C -run --interp=T %s\n", input)
|
hint = fmt.Sprintf("To trace execution, run:\n%% go build golang.org/x/tools/cmd/ssadump && ./ssadump -build=C -test -run --interp=T %s\n", input)
|
||||||
exitCode := interp.Interpret(mainPkg, 0, &types.StdSizes{WordSize: 8, MaxAlign: 8}, inputs[0], []string{})
|
exitCode := interp.Interpret(mainPkg, 0, &types.StdSizes{WordSize: 8, MaxAlign: 8}, inputs[0], []string{})
|
||||||
|
|
||||||
// The definition of success varies with each file.
|
// The definition of success varies with each file.
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package interp
|
package interp
|
||||||
|
|
||||||
// Custom hashtable atop map.
|
// Custom hashtable atop map.
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package interp
|
package interp
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package interp
|
package interp
|
||||||
|
|
||||||
// Emulated "reflect" package.
|
// Emulated "reflect" package.
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package interp
|
package interp
|
||||||
|
|
||||||
// Values
|
// Values
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package ssa
|
package ssa
|
||||||
|
|
||||||
// This file defines the lifting pass which tries to "lift" Alloc
|
// This file defines the lifting pass which tries to "lift" Alloc
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package ssa
|
package ssa
|
||||||
|
|
||||||
// lvalues are the union of addressable expressions and map-index
|
// lvalues are the union of addressable expressions and map-index
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package ssa
|
package ssa
|
||||||
|
|
||||||
// This file defines utilities for population of method sets.
|
// This file defines utilities for population of method sets.
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package ssa
|
package ssa
|
||||||
|
|
||||||
// This file implements the String() methods for all Value and
|
// This file implements the String() methods for all Value and
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package ssa
|
package ssa
|
||||||
|
|
||||||
// An optional pass for sanity-checking invariants of the SSA representation.
|
// An optional pass for sanity-checking invariants of the SSA representation.
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package ssa
|
package ssa
|
||||||
|
|
||||||
// This file defines utilities for working with source positions
|
// This file defines utilities for working with source positions
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package ssa_test
|
package ssa_test
|
||||||
|
|
||||||
// This file defines tests of source-level debugging utilities.
|
// This file defines tests of source-level debugging utilities.
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package ssa
|
package ssa
|
||||||
|
|
||||||
// This package defines a high-level intermediate representation for
|
// This package defines a high-level intermediate representation for
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package ssautil
|
package ssautil
|
||||||
|
|
||||||
// This file defines utility functions for constructing programs in SSA form.
|
// This file defines utility functions for constructing programs in SSA form.
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package ssautil_test
|
package ssautil_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package ssautil
|
package ssautil
|
||||||
|
|
||||||
// This file implements discovery of switch and type-switch constructs
|
// This file implements discovery of switch and type-switch constructs
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package ssa
|
package ssa
|
||||||
|
|
||||||
// CreateTestMainPackage synthesizes a main package that runs all the
|
// CreateTestMainPackage synthesizes a main package that runs all the
|
||||||
@ -221,6 +219,7 @@ func (deps) StartCPUProfile(io.Writer) error { return nil }
|
|||||||
func (deps) StopCPUProfile() {}
|
func (deps) StopCPUProfile() {}
|
||||||
func (deps) WriteHeapProfile(io.Writer) error { return nil }
|
func (deps) WriteHeapProfile(io.Writer) error { return nil }
|
||||||
func (deps) WriteProfileTo(string, io.Writer, int) error { return nil }
|
func (deps) WriteProfileTo(string, io.Writer, int) error { return nil }
|
||||||
|
func (deps) ImportPath() string { return "" }
|
||||||
|
|
||||||
var match deps
|
var match deps
|
||||||
{{else}}
|
{{else}}
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package ssa
|
package ssa
|
||||||
|
|
||||||
// This file defines a number of miscellaneous utility functions.
|
// This file defines a number of miscellaneous utility functions.
|
||||||
@ -60,7 +58,7 @@ func recvType(obj *types.Func) types.Type {
|
|||||||
//
|
//
|
||||||
// Exported to ssa/interp.
|
// Exported to ssa/interp.
|
||||||
//
|
//
|
||||||
// TODO(gri): this is a copy of go/types.defaultType; export that function.
|
// TODO(adonovan): use go/types.DefaultType after 1.8.
|
||||||
//
|
//
|
||||||
func DefaultType(typ types.Type) types.Type {
|
func DefaultType(typ types.Type) types.Type {
|
||||||
if t, ok := typ.(*types.Basic); ok {
|
if t, ok := typ.(*types.Basic); ok {
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package ssa
|
package ssa
|
||||||
|
|
||||||
// This file defines synthesis of Functions that delegate to declared
|
// This file defines synthesis of Functions that delegate to declared
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package typeutil_test
|
package typeutil_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package typeutil
|
package typeutil
|
||||||
|
|
||||||
import "go/types"
|
import "go/types"
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package typeutil_test
|
package typeutil_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
// Package typeutil defines various utilities for types, such as Map,
|
// Package typeutil defines various utilities for types, such as Map,
|
||||||
// a mapping from types.Type to interface{} values.
|
// a mapping from types.Type to interface{} values.
|
||||||
package typeutil // import "golang.org/x/tools/go/types/typeutil"
|
package typeutil // import "golang.org/x/tools/go/types/typeutil"
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package typeutil_test
|
package typeutil_test
|
||||||
|
|
||||||
// TODO(adonovan):
|
// TODO(adonovan):
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
// This file implements a cache of method sets.
|
// This file implements a cache of method sets.
|
||||||
|
|
||||||
package typeutil
|
package typeutil
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package typeutil
|
package typeutil
|
||||||
|
|
||||||
// This file defines utilities for user interfaces that display types.
|
// This file defines utilities for user interfaces that display types.
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
// +build go1.5
|
|
||||||
|
|
||||||
package typeutil_test
|
package typeutil_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
// Package analysis performs type and pointer analysis
|
// Package analysis performs type and pointer analysis
|
||||||
// and generates mark-up for the Go source view.
|
// and generates mark-up for the Go source view.
|
||||||
//
|
//
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package analysis
|
package analysis
|
||||||
|
|
||||||
// This file computes the CALLERS and CALLEES relations from the call
|
// This file computes the CALLERS and CALLEES relations from the call
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package analysis
|
package analysis
|
||||||
|
|
||||||
// This file computes the "implements" relation over all pairs of
|
// This file computes the "implements" relation over all pairs of
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package analysis
|
package analysis
|
||||||
|
|
||||||
// This file computes the channel "peers" relation over all pairs of
|
// This file computes the channel "peers" relation over all pairs of
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package analysis
|
package analysis
|
||||||
|
|
||||||
// This file computes the markup for information from go/types:
|
// This file computes the markup for information from go/types:
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
// No testdata on Android.
|
// No testdata on Android.
|
||||||
|
|
||||||
// +build !android
|
// +build !android
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package eg
|
package eg
|
||||||
|
|
||||||
// This file defines the AST rewriting pass.
|
// This file defines the AST rewriting pass.
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
// Package rename contains the implementation of the 'gorename' command
|
// Package rename contains the implementation of the 'gorename' command
|
||||||
// whose main function is in golang.org/x/tools/cmd/gorename.
|
// whose main function is in golang.org/x/tools/cmd/gorename.
|
||||||
// See the Usage constant for the command documentation.
|
// See the Usage constant for the command documentation.
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.5
|
|
||||||
|
|
||||||
package rename
|
package rename
|
||||||
|
|
||||||
// This file contains logic related to specifying a renaming: parsing of
|
// This file contains logic related to specifying a renaming: parsing of
|
||||||
|
Loading…
x
Reference in New Issue
Block a user