mirror of
https://github.com/golang/go.git
synced 2025-10-19 19:13:18 +00:00
cmd/compile/internal/devirtualize: use FatalfAt instead of Fatalf where possible
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>
This commit is contained in:
parent
0a239bcc99
commit
0ddb5ed465
1 changed files with 12 additions and 12 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue