]> Cypherpunks repositories - gostls13.git/commitdiff
go/types: generate mono.go from types2 source
authorRobert Griesemer <gri@golang.org>
Wed, 21 Feb 2024 23:33:28 +0000 (15:33 -0800)
committerGopher Robot <gobot@golang.org>
Wed, 28 Feb 2024 00:05:29 +0000 (00:05 +0000)
This CL reduces the amount of code that needs to be maintained
manually by about 340 LOC.

Change-Id: If7b96c30e5a2f1ff28ebf4ca2f3ac3f73d6a8865
Reviewed-on: https://go-review.googlesource.com/c/go/+/565839
Reviewed-by: Robert Griesemer <gri@google.com>
Auto-Submit: Robert Griesemer <gri@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Robert Findley <rfindley@google.com>
src/cmd/compile/internal/types2/mono.go
src/cmd/compile/internal/types2/util.go
src/go/types/generate_test.go
src/go/types/mono.go
src/go/types/util.go

index 72bbc24ba00a1fa7276270bfb5fe63ec58e33812..12635074218a58068ad38fd0b9f8ad825cf1aa55 100644 (file)
@@ -150,9 +150,9 @@ func (check *Checker) reportInstanceLoop(v int) {
                default:
                        panic("unexpected type")
                case *Named:
-                       err.addf(edge.pos, "%s implicitly parameterized by %s", obj.Name(), TypeString(edge.typ, qf)) // secondary error, \t indented
+                       err.addf(atPos(edge.pos), "%s implicitly parameterized by %s", obj.Name(), TypeString(edge.typ, qf)) // secondary error, \t indented
                case *TypeParam:
-                       err.addf(edge.pos, "%s instantiated as %s", obj.Name(), TypeString(edge.typ, qf)) // secondary error, \t indented
+                       err.addf(atPos(edge.pos), "%s instantiated as %s", obj.Name(), TypeString(edge.typ, qf)) // secondary error, \t indented
                }
        }
        err.report()
@@ -173,7 +173,7 @@ func (w *monoGraph) recordInstance(pkg *Package, pos syntax.Pos, tparams []*Type
        for i, tpar := range tparams {
                pos := pos
                if i < len(xlist) {
-                       pos = syntax.StartPos(xlist[i])
+                       pos = startPos(xlist[i])
                }
                w.assign(pkg, pos, tpar, targs[i])
        }
index e38966f21ad42e338d30d08c242b0446551ce5ce..0422c033466e1f7ee887e935ded3da31d3731943 100644 (file)
@@ -42,6 +42,9 @@ func argErrPos(call *syntax.CallExpr) *syntax.CallExpr { return call }
 // ExprString returns a string representation of x.
 func ExprString(x syntax.Node) string { return syntax.String(x) }
 
+// startPos returns the start position of node n.
+func startPos(n syntax.Node) syntax.Pos { return syntax.StartPos(n) }
+
 // endPos returns the position of the first character immediately after node n.
 func endPos(n syntax.Node) syntax.Pos { return syntax.EndPos(n) }
 
index 4e0d9bb3a989f02678426c8088cecaa5039598a1..8bdcb04dfefa2ddb53775636ee76be2398c58661 100644 (file)
@@ -133,10 +133,15 @@ var filemap = map[string]action{
        "lookup.go":           func(f *ast.File) { fixTokenPos(f) },
        "main_test.go":        nil,
        "map.go":              nil,
-       "named.go":            func(f *ast.File) { fixTokenPos(f); renameSelectors(f, "Trace->_Trace") },
-       "object.go":           func(f *ast.File) { fixTokenPos(f); renameIdents(f, "NewTypeNameLazy->_NewTypeNameLazy") },
-       "object_test.go":      func(f *ast.File) { renameImportPath(f, `"cmd/compile/internal/types2"->"go/types"`) },
-       "objset.go":           nil,
+       "mono.go": func(f *ast.File) {
+               fixTokenPos(f)
+               insertImportPath(f, `"go/ast"`)
+               renameSelectorExprs(f, "syntax.Expr->ast.Expr")
+       },
+       "named.go":       func(f *ast.File) { fixTokenPos(f); renameSelectors(f, "Trace->_Trace") },
+       "object.go":      func(f *ast.File) { fixTokenPos(f); renameIdents(f, "NewTypeNameLazy->_NewTypeNameLazy") },
+       "object_test.go": func(f *ast.File) { renameImportPath(f, `"cmd/compile/internal/types2"->"go/types"`) },
+       "objset.go":      nil,
        "operand.go": func(f *ast.File) {
                insertImportPath(f, `"go/token"`)
                renameImportPath(f, `"cmd/compile/internal/syntax"->"go/ast"`)
index f088e21dcbe570a18e6ad29c99eabaad44fc4b8d..063947ec2a283d1936d492648ef4342c83e1d98d 100644 (file)
@@ -1,3 +1,5 @@
+// Code generated by "go test -run=Generate -write=all"; DO NOT EDIT.
+
 // Copyright 2021 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.
@@ -174,7 +176,7 @@ func (w *monoGraph) recordInstance(pkg *Package, pos token.Pos, tparams []*TypeP
        for i, tpar := range tparams {
                pos := pos
                if i < len(xlist) {
-                       pos = xlist[i].Pos()
+                       pos = startPos(xlist[i])
                }
                w.assign(pkg, pos, tpar, targs[i])
        }
index faddf131146db2cdd1c249daff590a03175b6001..bfaba809adaae41ad53648fff510cffe616951b2 100644 (file)
@@ -36,6 +36,9 @@ func dddErrPos(call *ast.CallExpr) positioner { return atPos(call.Ellipsis) }
 // argErrPos returns positioner for reportign an invalid argument count.
 func argErrPos(call *ast.CallExpr) positioner { return inNode(call, call.Rparen) }
 
+// startPos returns the start position of node n.
+func startPos(n ast.Node) token.Pos { return n.Pos() }
+
 // endPos returns the position of the first character immediately after node n.
 func endPos(n ast.Node) token.Pos { return n.End() }