]> Cypherpunks repositories - gostls13.git/commitdiff
go/types: generate unify.go
authorRobert Griesemer <gri@golang.org>
Thu, 12 Jan 2023 00:43:11 +0000 (16:43 -0800)
committerGopher Robot <gobot@golang.org>
Tue, 17 Jan 2023 19:56:12 +0000 (19:56 +0000)
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>
src/go/types/generator.go
src/go/types/unify.go

index 2972f5e1bfaee953578bb475aab841debaa00898..3f2668028db8f4e3859a0b41b71afeab19f3a386 100644 (file)
@@ -115,6 +115,7 @@ var filemap = map[string]action{
        "typeterm_test.go": nil,
        "typeterm.go":      nil,
        "under.go":         nil,
+       "unify.go":         fixSprintf,
        "universe.go":      fixGlobalTypVarDecl,
        "validtype.go":     nil,
 }
@@ -210,3 +211,32 @@ func fixGlobalTypVarDecl(f *ast.File) {
                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
+}
index 602e304b4a2c0cebc74ae20f31511d6f0d98c7ff..58f2eedf8ad3cb9f2219ae233323d59e8fc369fd 100644 (file)
@@ -1,3 +1,5 @@
+// Code generated by "go run generator.go"; DO NOT EDIT.
+
 // Copyright 2020 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.