From: Matthew Dempsky Date: Tue, 21 Jun 2022 12:22:00 +0000 (-0700) Subject: [dev.unified] cmd/compile/internal/typecheck: replace unreachable code with assert X-Git-Tag: go1.20rc1~1807^2~50 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=c70e93ff3d1855b0d0a0508ab83dd751ee65f5b3;p=gostls13.git [dev.unified] cmd/compile/internal/typecheck: replace unreachable code with assert Since the removal of -G=0 mode, IR is always well-typed. And in well-typed IR, convlit will always returns expressions having real types (i.e., not untyped). Change-Id: I1ac99a88c94777829852519347a716d19af7948c Reviewed-on: https://go-review.googlesource.com/c/go/+/413363 Run-TryBot: Matthew Dempsky Reviewed-by: Keith Randall TryBot-Result: Gopher Robot Reviewed-by: David Chase --- diff --git a/src/cmd/compile/internal/typecheck/subr.go b/src/cmd/compile/internal/typecheck/subr.go index 3b0075e616..8295a4e560 100644 --- a/src/cmd/compile/internal/typecheck/subr.go +++ b/src/cmd/compile/internal/typecheck/subr.go @@ -301,24 +301,14 @@ func assignconvfn(n ir.Node, t *types.Type, context func() string) ir.Node { n = convlit1(n, t, false, context) if n.Type() == nil { - return n + base.Fatalf("cannot assign %v to %v", n, t) + } + if n.Type().IsUntyped() { + base.Fatalf("%L has untyped type", n) } if t.Kind() == types.TBLANK { return n } - - // Convert ideal bool from comparison to plain bool - // if the next step is non-bool (like interface{}). - if n.Type() == types.UntypedBool && !t.IsBoolean() { - if n.Op() == ir.ONAME || n.Op() == ir.OLITERAL { - r := ir.NewConvExpr(base.Pos, ir.OCONVNOP, nil, n) - r.SetType(types.Types[types.TBOOL]) - r.SetTypecheck(1) - r.SetImplicit(true) - n = r - } - } - if types.Identical(n.Type(), t) { return n }