mirror of
https://github.com/golang/go
synced 2024-11-17 17:54:48 -07:00
go/types: generate unify.go
Change-Id: If94a4c18e954ff403892d0a70e424ab58e997451 Reviewed-on: https://go-review.googlesource.com/c/go/+/461603 Reviewed-by: Robert Griesemer <gri@google.com> Run-TryBot: Robert Griesemer <gri@google.com> Auto-Submit: Robert Griesemer <gri@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Robert Findley <rfindley@google.com>
This commit is contained in:
parent
4cc8d0eea9
commit
2f5718a80b
@ -115,6 +115,7 @@ var filemap = map[string]action{
|
|||||||
"typeterm_test.go": nil,
|
"typeterm_test.go": nil,
|
||||||
"typeterm.go": nil,
|
"typeterm.go": nil,
|
||||||
"under.go": nil,
|
"under.go": nil,
|
||||||
|
"unify.go": fixSprintf,
|
||||||
"universe.go": fixGlobalTypVarDecl,
|
"universe.go": fixGlobalTypVarDecl,
|
||||||
"validtype.go": nil,
|
"validtype.go": nil,
|
||||||
}
|
}
|
||||||
@ -210,3 +211,32 @@ func fixGlobalTypVarDecl(f *ast.File) {
|
|||||||
return true
|
return true
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// fixSprintf adds an extra nil argument for the *token.FileSet parameter in sprintf calls.
|
||||||
|
func fixSprintf(f *ast.File) {
|
||||||
|
ast.Inspect(f, func(n ast.Node) bool {
|
||||||
|
switch n := n.(type) {
|
||||||
|
case *ast.CallExpr:
|
||||||
|
if fun, _ := n.Fun.(*ast.Ident); fun != nil && fun.Name == "sprintf" && len(n.Args) >= 4 /* ... args */ {
|
||||||
|
n.Args = insert(n.Args, 1, newIdent(n.Args[1].Pos(), "nil"))
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// newIdent returns a new identifier with the given position and name.
|
||||||
|
func newIdent(pos token.Pos, name string) *ast.Ident {
|
||||||
|
id := ast.NewIdent(name)
|
||||||
|
id.NamePos = pos
|
||||||
|
return id
|
||||||
|
}
|
||||||
|
|
||||||
|
// insert inserts x at list[at] and moves the remaining elements up.
|
||||||
|
func insert(list []ast.Expr, at int, x ast.Expr) []ast.Expr {
|
||||||
|
list = append(list, nil)
|
||||||
|
copy(list[at+1:], list[at:])
|
||||||
|
list[at] = x
|
||||||
|
return list
|
||||||
|
}
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
// Code generated by "go run generator.go"; DO NOT EDIT.
|
||||||
|
|
||||||
// Copyright 2020 The Go Authors. All rights reserved.
|
// Copyright 2020 The Go Authors. All rights reserved.
|
||||||
// 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.
|
||||||
|
Loading…
Reference in New Issue
Block a user