From c70e93ff3d1855b0d0a0508ab83dd751ee65f5b3 Mon Sep 17 00:00:00 2001 From: Matthew Dempsky Date: Tue, 21 Jun 2022 05:22:00 -0700 Subject: [PATCH] [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 --- src/cmd/compile/internal/typecheck/subr.go | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/src/cmd/compile/internal/typecheck/subr.go b/src/cmd/compile/internal/typecheck/subr.go index 3b0075e6169..8295a4e5602 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 }