]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: do some TODOs about Fatalf
authorMatthew Dempsky <mdempsky@google.com>
Sun, 20 Aug 2023 05:32:08 +0000 (22:32 -0700)
committerGopher Robot <gobot@golang.org>
Mon, 21 Aug 2023 21:39:33 +0000 (21:39 +0000)
Separate CL in case I'm mistaken.

Change-Id: I6b5fa0efb27a6b4fb4c133698bd7e2f01b4cccdb
Reviewed-on: https://go-review.googlesource.com/c/go/+/521195
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Austin Clements <austin@google.com>
Auto-Submit: Matthew Dempsky <mdempsky@google.com>
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>
src/cmd/compile/internal/devirtualize/devirtualize.go
src/cmd/compile/internal/typecheck/expr.go

index 93882a34963aaf7124c00cebc141679e813d22ae..ae9f24d9a56c9a2004aa75d8ddb962afc630760f 100644 (file)
@@ -129,11 +129,7 @@ func staticCall(call *ir.CallExpr) {
                call.SetOp(ir.OCALLINTER)
                call.X = x
        default:
-               // TODO(mdempsky): Turn back into Fatalf after more testing.
-               if base.Flag.LowerM != 0 {
-                       base.WarnfAt(call.Pos(), "failed to devirtualize %v (%v)", x, x.Op())
-               }
-               return
+               base.FatalfAt(call.Pos(), "failed to devirtualize %v (%v)", x, x.Op())
        }
 
        // Duplicated logic from typecheck for function call return
index edf0472567f9432e14e6113d139e437c6436d3fc..7e685ab5690be4555206e45e99759969c11c6682 100644 (file)
@@ -469,7 +469,9 @@ func dot(pos src.XPos, typ *types.Type, op ir.Op, x ir.Node, selection *types.Fi
 // inserted too.
 func XDotField(pos src.XPos, x ir.Node, sym *types.Sym) *ir.SelectorExpr {
        n := Expr(ir.NewSelectorExpr(pos, ir.OXDOT, x, sym)).(*ir.SelectorExpr)
-       // TODO(mdempsky): Assert n is ODOT/ODOTPTR.
+       if n.Op() != ir.ODOT && n.Op() != ir.ODOTPTR {
+               base.FatalfAt(pos, "unexpected result op: %v (%v)", n.Op(), n)
+       }
        return n
 }
 
@@ -483,10 +485,14 @@ func XDotMethod(pos src.XPos, x ir.Node, sym *types.Sym, callee bool) *ir.Select
        n := ir.NewSelectorExpr(pos, ir.OXDOT, x, sym)
        if callee {
                n = Callee(n).(*ir.SelectorExpr)
-               // TODO(mdempsky): Assert n is ODOTMETH/ODOTINTER.
+               if n.Op() != ir.ODOTMETH && n.Op() != ir.ODOTINTER {
+                       base.FatalfAt(pos, "unexpected result op: %v (%v)", n.Op(), n)
+               }
        } else {
                n = Expr(n).(*ir.SelectorExpr)
-               // TODO(mdempsky): Assert n is OMETHVALUE.
+               if n.Op() != ir.OMETHVALUE {
+                       base.FatalfAt(pos, "unexpected result op: %v (%v)", n.Op(), n)
+               }
        }
        return n
 }