]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile/internal/devirtualize: use FatalfAt instead of Fatalf where possible
authorMateusz Poliwczak <mpoliwczak34@gmail.com>
Sun, 12 Oct 2025 08:56:13 +0000 (10:56 +0200)
committerGopher Robot <gobot@golang.org>
Tue, 14 Oct 2025 18:31:42 +0000 (11:31 -0700)
Change-Id: I5e9e9c89336446720c3c21347969e4126a6a6964
Reviewed-on: https://go-review.googlesource.com/c/go/+/711140
Reviewed-by: Keith Randall <khr@golang.org>
Reviewed-by: Keith Randall <khr@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Auto-Submit: Keith Randall <khr@golang.org>

src/cmd/compile/internal/devirtualize/devirtualize.go

index 363cd6f2e5d17ae489331700ce7ec5705941b083..dfcdd42236dccad201b891d65bf937047fd4c78b 100644 (file)
@@ -187,7 +187,7 @@ func concreteType(s *State, n ir.Node) (typ *types.Type) {
                return nil
        }
        if typ != nil && typ.IsInterface() {
-               base.Fatalf("typ.IsInterface() = true; want = false; typ = %v", typ)
+               base.FatalfAt(n.Pos(), "typ.IsInterface() = true; want = false; typ = %v", typ)
        }
        return typ
 }
@@ -226,7 +226,7 @@ func concreteType1(s *State, n ir.Node, seen map[*ir.Name]struct{}) (outT *types
                                if !n1.Type().IsInterface() || !types.Identical(n1.Type().Underlying(), n1.X.Type().Underlying()) {
                                        // As we check (directly before this switch) whether n is an interface, thus we should only reach
                                        // here for iface conversions where both operands are the same.
-                                       base.Fatalf("not identical/interface types found n1.Type = %v; n1.X.Type = %v", n1.Type(), n1.X.Type())
+                                       base.FatalfAt(n1.Pos(), "not identical/interface types found n1.Type = %v; n1.X.Type = %v", n1.Type(), n1.X.Type())
                                }
                                n = n1.X
                                continue
@@ -260,12 +260,12 @@ func concreteType1(s *State, n ir.Node, seen map[*ir.Name]struct{}) (outT *types
        }
 
        if name.Op() != ir.ONAME {
-               base.Fatalf("name.Op = %v; want = ONAME", n.Op())
+               base.FatalfAt(name.Pos(), "name.Op = %v; want = ONAME", n.Op())
        }
 
        // name.Curfn must be set, as we checked name.Class != ir.PAUTO before.
        if name.Curfn == nil {
-               base.Fatalf("name.Curfn = nil; want not nil")
+               base.FatalfAt(name.Pos(), "name.Curfn = nil; want not nil")
        }
 
        if name.Addrtaken() {
@@ -385,11 +385,11 @@ func (s *State) InlinedCall(fun *ir.Func, origCall *ir.CallExpr, inlinedCall *ir
 func (s *State) assignments(n *ir.Name) []assignment {
        fun := n.Curfn
        if fun == nil {
-               base.Fatalf("n.Curfn = <nil>")
+               base.FatalfAt(n.Pos(), "n.Curfn = <nil>")
        }
 
        if !n.Type().IsInterface() {
-               base.Fatalf("name passed to assignments is not of an interface type: %v", n.Type())
+               base.FatalfAt(n.Pos(), "name passed to assignments is not of an interface type: %v", n.Type())
        }
 
        // Analyze assignments in func, if not analyzed before.
@@ -430,7 +430,7 @@ func (s *State) analyze(nodes ir.Nodes) {
 
                n = n.Canonical()
                if n.Op() != ir.ONAME {
-                       base.Fatalf("n.Op = %v; want = ONAME", n.Op())
+                       base.FatalfAt(n.Pos(), "n.Op = %v; want = ONAME", n.Op())
                }
 
                switch a := assignment.(type) {
@@ -492,14 +492,14 @@ func (s *State) analyze(nodes ir.Nodes) {
                case ir.OAS2DOTTYPE:
                        n := n.(*ir.AssignListStmt)
                        if n.Rhs[0] == nil {
-                               base.Fatalf("n.Rhs[0] == nil; n = %v", n)
+                               base.FatalfAt(n.Pos(), "n.Rhs[0] == nil; n = %v", n)
                        }
                        assign(n.Lhs[0], n.Rhs[0])
                        assign(n.Lhs[1], nil) // boolean does not have methods to devirtualize
                case ir.OAS2MAPR, ir.OAS2RECV, ir.OSELRECV2:
                        n := n.(*ir.AssignListStmt)
                        if n.Rhs[0] == nil {
-                               base.Fatalf("n.Rhs[0] == nil; n = %v", n)
+                               base.FatalfAt(n.Pos(), "n.Rhs[0] == nil; n = %v", n)
                        }
                        assign(n.Lhs[0], n.Rhs[0].Type())
                        assign(n.Lhs[1], nil) // boolean does not have methods to devirtualize
@@ -529,7 +529,7 @@ func (s *State) analyze(nodes ir.Nodes) {
                                        assign(p, call.ReturnVars[i])
                                }
                        } else {
-                               base.Fatalf("unexpected type %T in OAS2FUNC Rhs[0]", call)
+                               base.FatalfAt(n.Pos(), "unexpected type %T in OAS2FUNC Rhs[0]", call)
                        }
                case ir.ORANGE:
                        n := n.(*ir.RangeStmt)
@@ -545,7 +545,7 @@ func (s *State) analyze(nodes ir.Nodes) {
                                assign(n.Value, xTyp.Elem())
                        } else if xTyp.IsChan() {
                                assign(n.Key, xTyp.Elem())
-                               base.Assertf(n.Value == nil, "n.Value != nil in range over chan")
+                               base.AssertfAt(n.Value == nil, n.Pos(), "n.Value != nil in range over chan")
                        } else if xTyp.IsMap() {
                                assign(n.Key, xTyp.Key())
                                assign(n.Value, xTyp.Elem())
@@ -556,7 +556,7 @@ func (s *State) analyze(nodes ir.Nodes) {
                        } else {
                                // We will not reach here in case of an range-over-func, as it is
                                // rewrtten to function calls in the noder package.
-                               base.Fatalf("range over unexpected type %v", n.X.Type())
+                               base.FatalfAt(n.Pos(), "range over unexpected type %v", n.X.Type())
                        }
                case ir.OSWITCH:
                        n := n.(*ir.SwitchStmt)