Commit 93d92d51 authored by Brad Fitzpatrick's avatar Brad Fitzpatrick

cmd/api: fix type scrubbing

It wasn't removing names from func parameters for func types,
and it was handling "a, b string" as "string", not "string, string".

Fixes #4688

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/7181051
parent b9f0a6bf
...@@ -2835,7 +2835,7 @@ pkg go/ast, type Field struct, Doc *CommentGroup ...@@ -2835,7 +2835,7 @@ pkg go/ast, type Field struct, Doc *CommentGroup
pkg go/ast, type Field struct, Names []*Ident pkg go/ast, type Field struct, Names []*Ident
pkg go/ast, type Field struct, Tag *BasicLit pkg go/ast, type Field struct, Tag *BasicLit
pkg go/ast, type Field struct, Type Expr pkg go/ast, type Field struct, Type Expr
pkg go/ast, type FieldFilter func(name string, value reflect.Value) bool pkg go/ast, type FieldFilter func(string, reflect.Value) bool
pkg go/ast, type FieldList struct pkg go/ast, type FieldList struct
pkg go/ast, type FieldList struct, Closing token.Pos pkg go/ast, type FieldList struct, Closing token.Pos
pkg go/ast, type FieldList struct, List []*Field pkg go/ast, type FieldList struct, List []*Field
...@@ -2895,7 +2895,7 @@ pkg go/ast, type ImportSpec struct, Doc *CommentGroup ...@@ -2895,7 +2895,7 @@ pkg go/ast, type ImportSpec struct, Doc *CommentGroup
pkg go/ast, type ImportSpec struct, EndPos token.Pos pkg go/ast, type ImportSpec struct, EndPos token.Pos
pkg go/ast, type ImportSpec struct, Name *Ident pkg go/ast, type ImportSpec struct, Name *Ident
pkg go/ast, type ImportSpec struct, Path *BasicLit pkg go/ast, type ImportSpec struct, Path *BasicLit
pkg go/ast, type Importer func(imports map[string]*Object, path string) (pkg *Object, err error) pkg go/ast, type Importer func(map[string]*Object, string) (*Object, error)
pkg go/ast, type IncDecStmt struct pkg go/ast, type IncDecStmt struct
pkg go/ast, type IncDecStmt struct, Tok token.Token pkg go/ast, type IncDecStmt struct, Tok token.Token
pkg go/ast, type IncDecStmt struct, TokPos token.Pos pkg go/ast, type IncDecStmt struct, TokPos token.Pos
...@@ -3033,7 +3033,7 @@ pkg go/build, type Context struct, GOARCH string ...@@ -3033,7 +3033,7 @@ pkg go/build, type Context struct, GOARCH string
pkg go/build, type Context struct, GOOS string pkg go/build, type Context struct, GOOS string
pkg go/build, type Context struct, GOPATH string pkg go/build, type Context struct, GOPATH string
pkg go/build, type Context struct, GOROOT string pkg go/build, type Context struct, GOROOT string
pkg go/build, type Context struct, HasSubdir func(string) (string, bool) pkg go/build, type Context struct, HasSubdir func(string, string) (string, bool)
pkg go/build, type Context struct, IsAbsPath func(string) bool pkg go/build, type Context struct, IsAbsPath func(string) bool
pkg go/build, type Context struct, IsDir func(string) bool pkg go/build, type Context struct, IsDir func(string) bool
pkg go/build, type Context struct, JoinPath func(...string) string pkg go/build, type Context struct, JoinPath func(...string) string
...@@ -3160,7 +3160,7 @@ pkg go/scanner, method (ErrorList) Swap(int, int) ...@@ -3160,7 +3160,7 @@ pkg go/scanner, method (ErrorList) Swap(int, int)
pkg go/scanner, type Error struct pkg go/scanner, type Error struct
pkg go/scanner, type Error struct, Msg string pkg go/scanner, type Error struct, Msg string
pkg go/scanner, type Error struct, Pos token.Position pkg go/scanner, type Error struct, Pos token.Position
pkg go/scanner, type ErrorHandler func(pos token.Position, msg string) pkg go/scanner, type ErrorHandler func(token.Position, string)
pkg go/scanner, type ErrorList []*Error pkg go/scanner, type ErrorList []*Error
pkg go/scanner, type Mode uint pkg go/scanner, type Mode uint
pkg go/scanner, type Scanner struct pkg go/scanner, type Scanner struct
...@@ -4808,7 +4808,7 @@ pkg net/http, type Server struct, ReadTimeout time.Duration ...@@ -4808,7 +4808,7 @@ pkg net/http, type Server struct, ReadTimeout time.Duration
pkg net/http, type Server struct, TLSConfig *tls.Config pkg net/http, type Server struct, TLSConfig *tls.Config
pkg net/http, type Server struct, WriteTimeout time.Duration pkg net/http, type Server struct, WriteTimeout time.Duration
pkg net/http, type Transport struct pkg net/http, type Transport struct
pkg net/http, type Transport struct, Dial func(string) (net.Conn, error) pkg net/http, type Transport struct, Dial func(string, string) (net.Conn, error)
pkg net/http, type Transport struct, DisableCompression bool pkg net/http, type Transport struct, DisableCompression bool
pkg net/http, type Transport struct, DisableKeepAlives bool pkg net/http, type Transport struct, DisableKeepAlives bool
pkg net/http, type Transport struct, MaxIdleConnsPerHost int pkg net/http, type Transport struct, MaxIdleConnsPerHost int
...@@ -5327,7 +5327,7 @@ pkg path/filepath, func SplitList(string) []string ...@@ -5327,7 +5327,7 @@ pkg path/filepath, func SplitList(string) []string
pkg path/filepath, func ToSlash(string) string pkg path/filepath, func ToSlash(string) string
pkg path/filepath, func VolumeName(string) string pkg path/filepath, func VolumeName(string) string
pkg path/filepath, func Walk(string, WalkFunc) error pkg path/filepath, func Walk(string, WalkFunc) error
pkg path/filepath, type WalkFunc func(path string, info os.FileInfo, err error) error pkg path/filepath, type WalkFunc func(string, os.FileInfo, error) error
pkg path/filepath, var ErrBadPattern error pkg path/filepath, var ErrBadPattern error
pkg path/filepath, var SkipDir error pkg path/filepath, var SkipDir error
pkg reflect, const Array Kind pkg reflect, const Array Kind
...@@ -30127,10 +30127,10 @@ pkg syscall, type Timeval struct ...@@ -30127,10 +30127,10 @@ pkg syscall, type Timeval struct
pkg syscall, var ForkLock sync.RWMutex pkg syscall, var ForkLock sync.RWMutex
pkg syscall, var SocketDisableIPv6 bool pkg syscall, var SocketDisableIPv6 bool
pkg testing, func Benchmark(func(*B)) BenchmarkResult pkg testing, func Benchmark(func(*B)) BenchmarkResult
pkg testing, func Main(func(string) (bool, error), []InternalTest, []InternalBenchmark, []InternalExample) pkg testing, func Main(func(string, string) (bool, error), []InternalTest, []InternalBenchmark, []InternalExample)
pkg testing, func RunBenchmarks(func(string) (bool, error), []InternalBenchmark) pkg testing, func RunBenchmarks(func(string, string) (bool, error), []InternalBenchmark)
pkg testing, func RunExamples(func(string) (bool, error), []InternalExample) bool pkg testing, func RunExamples(func(string, string) (bool, error), []InternalExample) bool
pkg testing, func RunTests(func(string) (bool, error), []InternalTest) bool pkg testing, func RunTests(func(string, string) (bool, error), []InternalTest) bool
pkg testing, func Short() bool pkg testing, func Short() bool
pkg testing, method (*B) Error(...interface{}) pkg testing, method (*B) Error(...interface{})
pkg testing, method (*B) Errorf(string, ...interface{}) pkg testing, method (*B) Errorf(string, ...interface{})
...@@ -879,7 +879,7 @@ func (w *Walker) walkTypeSpec(ts *ast.TypeSpec) { ...@@ -879,7 +879,7 @@ func (w *Walker) walkTypeSpec(ts *ast.TypeSpec) {
case *ast.InterfaceType: case *ast.InterfaceType:
w.walkInterfaceType(name, t) w.walkInterfaceType(name, t)
default: default:
w.emitFeature(fmt.Sprintf("type %s %s", name, w.nodeString(ts.Type))) w.emitFeature(fmt.Sprintf("type %s %s", name, w.nodeString(w.namelessType(ts.Type))))
} }
} }
...@@ -1120,7 +1120,13 @@ func (w *Walker) namelessFieldList(fl *ast.FieldList) *ast.FieldList { ...@@ -1120,7 +1120,13 @@ func (w *Walker) namelessFieldList(fl *ast.FieldList) *ast.FieldList {
fl2 := &ast.FieldList{} fl2 := &ast.FieldList{}
if fl != nil { if fl != nil {
for _, f := range fl.List { for _, f := range fl.List {
fl2.List = append(fl2.List, w.namelessField(f)) repeats := 1
if len(f.Names) > 1 {
repeats = len(f.Names)
}
for i := 0; i < repeats; i++ {
fl2.List = append(fl2.List, w.namelessField(f))
}
} }
} }
return fl2 return fl2
......
...@@ -10,6 +10,7 @@ pkg p1, func Bar(int8, int16, int64) ...@@ -10,6 +10,7 @@ pkg p1, func Bar(int8, int16, int64)
pkg p1, func Bar1(int8, int16, int64) uint64 pkg p1, func Bar1(int8, int16, int64) uint64
pkg p1, func Bar2(int8, int16, int64) (uint8, uint64) pkg p1, func Bar2(int8, int16, int64) (uint8, uint64)
pkg p1, func BarE() Error pkg p1, func BarE() Error
pkg p1, func PlainFunc(int, int, string) (*B, error)
pkg p1, func TakesFunc(func(int) int) pkg p1, func TakesFunc(func(int) int)
pkg p1, method (*B) JustOnB() pkg p1, method (*B) JustOnB()
pkg p1, method (*B) OnBothTandBPtr() pkg p1, method (*B) OnBothTandBPtr()
...@@ -37,20 +38,21 @@ pkg p1, type Embedded struct ...@@ -37,20 +38,21 @@ pkg p1, type Embedded struct
pkg p1, type Error interface { Error, Temporary } pkg p1, type Error interface { Error, Temporary }
pkg p1, type Error interface, Error() string pkg p1, type Error interface, Error() string
pkg p1, type Error interface, Temporary() bool pkg p1, type Error interface, Temporary() bool
pkg p1, type I interface, unexported methods pkg p1, type FuncType func(int, int, string) (*B, error)
pkg p1, type I interface, Get(string) int64 pkg p1, type I interface, Get(string) int64
pkg p1, type I interface, GetNamed(string) int64 pkg p1, type I interface, GetNamed(string) int64
pkg p1, type I interface, Name() string pkg p1, type I interface, Name() string
pkg p1, type I interface, PackageTwoMeth() pkg p1, type I interface, PackageTwoMeth()
pkg p1, type I interface, Set(string, int64) pkg p1, type I interface, Set(string, int64)
pkg p1, type I interface, unexported methods
pkg p1, type MyInt int pkg p1, type MyInt int
pkg p1, type Namer interface { Name } pkg p1, type Namer interface { Name }
pkg p1, type Namer interface, Name() string pkg p1, type Namer interface, Name() string
pkg p1, type Private interface, X()
pkg p1, type Private interface, unexported methods
pkg p1, type Public interface { X, Y } pkg p1, type Public interface { X, Y }
pkg p1, type Public interface, X() pkg p1, type Public interface, X()
pkg p1, type Public interface, Y() pkg p1, type Public interface, Y()
pkg p1, type Private interface, unexported methods
pkg p1, type Private interface, X()
pkg p1, type S struct pkg p1, type S struct
pkg p1, type S struct, Public *int pkg p1, type S struct, Public *int
pkg p1, type S struct, PublicTime time.Time pkg p1, type S struct, PublicTime time.Time
......
...@@ -149,8 +149,12 @@ type TPtrExported struct { ...@@ -149,8 +149,12 @@ type TPtrExported struct {
*Embedded *Embedded
} }
type FuncType func(x, y int, s string) (b *B, err error)
type Embedded struct{} type Embedded struct{}
func PlainFunc(x, y int, s string) (b *B, err error)
func (*Embedded) OnEmbedded() {} func (*Embedded) OnEmbedded() {}
func (*T) JustOnT() {} func (*T) JustOnT() {}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment