go.tools/go.types: cleanups
Per feedback for CL 37250044. R=adonovan CC=golang-codereviews https://golang.org/cl/47150043
This commit is contained in:
parent
3d2d158b9d
commit
10f0067eb1
|
|
@ -218,6 +218,8 @@ func (p *exporter) fraction(x exact.Value) {
|
||||||
p.ufloat(exact.Denom(x))
|
p.ufloat(exact.Denom(x))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ufloat writes abs(x) in form of a binary exponent
|
||||||
|
// followed by its mantissa bytes; x must be != 0.
|
||||||
func (p *exporter) ufloat(x exact.Value) {
|
func (p *exporter) ufloat(x exact.Value) {
|
||||||
mant := exact.Bytes(x)
|
mant := exact.Bytes(x)
|
||||||
exp8 := -1
|
exp8 := -1
|
||||||
|
|
@ -288,6 +290,13 @@ func (p *exporter) typ(typ types.Type) {
|
||||||
case *types.Interface:
|
case *types.Interface:
|
||||||
p.int(interfaceTag)
|
p.int(interfaceTag)
|
||||||
|
|
||||||
|
// write embedded interfaces
|
||||||
|
m := t.NumEmbeddeds()
|
||||||
|
p.int(m)
|
||||||
|
for i := 0; i < m; i++ {
|
||||||
|
p.typ(t.Embedded(i))
|
||||||
|
}
|
||||||
|
|
||||||
// write methods
|
// write methods
|
||||||
n := t.NumExplicitMethods()
|
n := t.NumExplicitMethods()
|
||||||
p.int(n)
|
p.int(n)
|
||||||
|
|
@ -297,13 +306,6 @@ func (p *exporter) typ(typ types.Type) {
|
||||||
p.typ(m.Type())
|
p.typ(m.Type())
|
||||||
}
|
}
|
||||||
|
|
||||||
// write embedded interfaces
|
|
||||||
m := t.NumEmbeddeds()
|
|
||||||
p.int(m)
|
|
||||||
for i := 0; i < m; i++ {
|
|
||||||
p.typ(t.Embedded(i))
|
|
||||||
}
|
|
||||||
|
|
||||||
case *types.Map:
|
case *types.Map:
|
||||||
p.int(mapTag)
|
p.int(mapTag)
|
||||||
p.typ(t.Key())
|
p.typ(t.Key())
|
||||||
|
|
|
||||||
|
|
@ -253,16 +253,19 @@ func (p *importer) typ() types.Type {
|
||||||
t := new(types.Interface)
|
t := new(types.Interface)
|
||||||
p.record(t)
|
p.record(t)
|
||||||
|
|
||||||
|
// read embedded interfaces
|
||||||
|
embeddeds := make([]*types.Named, p.int())
|
||||||
|
for i := range embeddeds {
|
||||||
|
embeddeds[i] = p.typ().(*types.Named)
|
||||||
|
}
|
||||||
|
|
||||||
|
// read methods
|
||||||
methods := make([]*types.Func, p.int())
|
methods := make([]*types.Func, p.int())
|
||||||
for i := range methods {
|
for i := range methods {
|
||||||
pkg, name := p.qualifiedName()
|
pkg, name := p.qualifiedName()
|
||||||
methods[i] = types.NewFunc(token.NoPos, pkg, name, p.typ().(*types.Signature))
|
methods[i] = types.NewFunc(token.NoPos, pkg, name, p.typ().(*types.Signature))
|
||||||
}
|
}
|
||||||
|
|
||||||
embeddeds := make([]*types.Named, p.int())
|
|
||||||
for i := range embeddeds {
|
|
||||||
embeddeds[i] = p.typ().(*types.Named)
|
|
||||||
}
|
|
||||||
*t = *types.NewInterface(methods, embeddeds)
|
*t = *types.NewInterface(methods, embeddeds)
|
||||||
return t
|
return t
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,6 @@ package importer
|
||||||
import (
|
import (
|
||||||
"bufio"
|
"bufio"
|
||||||
"bytes"
|
"bytes"
|
||||||
"flag"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"go/ast"
|
"go/ast"
|
||||||
"go/build"
|
"go/build"
|
||||||
|
|
@ -24,8 +23,6 @@ import (
|
||||||
"code.google.com/p/go.tools/go/types"
|
"code.google.com/p/go.tools/go/types"
|
||||||
)
|
)
|
||||||
|
|
||||||
var verbose = flag.Bool("importer.v", false, "verbose mode")
|
|
||||||
|
|
||||||
var tests = []string{
|
var tests = []string{
|
||||||
`package p`,
|
`package p`,
|
||||||
|
|
||||||
|
|
@ -108,7 +105,7 @@ func TestImportStdLib(t *testing.T) {
|
||||||
// can be compared reasonably well
|
// can be compared reasonably well
|
||||||
types.GcCompatibilityMode = true
|
types.GcCompatibilityMode = true
|
||||||
|
|
||||||
var totSize, totGcsize, n int
|
var totSize, totGcsize int
|
||||||
for _, lib := range libs {
|
for _, lib := range libs {
|
||||||
// limit run time for short tests
|
// limit run time for short tests
|
||||||
if testing.Short() && time.Since(start) >= 750*time.Millisecond {
|
if testing.Short() && time.Since(start) >= 750*time.Millisecond {
|
||||||
|
|
@ -128,15 +125,14 @@ func TestImportStdLib(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
size, gcsize := testExportImport(t, pkg, lib)
|
size, gcsize := testExportImport(t, pkg, lib)
|
||||||
if *verbose {
|
if testing.Verbose() {
|
||||||
fmt.Printf("%s\t%d\t%d\t%d%%\n", lib, size, gcsize, int(float64(size)*100/float64(gcsize)))
|
fmt.Printf("%s\t%d\t%d\t%d%%\n", lib, size, gcsize, int(float64(size)*100/float64(gcsize)))
|
||||||
}
|
}
|
||||||
totSize += size
|
totSize += size
|
||||||
totGcsize += gcsize
|
totGcsize += gcsize
|
||||||
n++
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if *verbose {
|
if testing.Verbose() {
|
||||||
fmt.Printf("\n%d\t%d\t%d%%\n", totSize, totGcsize, int(float64(totSize)*100/float64(totGcsize)))
|
fmt.Printf("\n%d\t%d\t%d%%\n", totSize, totGcsize, int(float64(totSize)*100/float64(totGcsize)))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue