]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.unified] cmd/compile/internal/typecheck: replace unreachable code with assert
authorMatthew Dempsky <mdempsky@google.com>
Tue, 21 Jun 2022 12:22:00 +0000 (05:22 -0700)
committerMatthew Dempsky <mdempsky@google.com>
Thu, 23 Jun 2022 21:53:52 +0000 (21:53 +0000)
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 <mdempsky@google.com>
Reviewed-by: Keith Randall <khr@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: David Chase <drchase@google.com>
src/cmd/compile/internal/typecheck/subr.go

index 3b0075e616921442727e63bdf140f35c0c3bf343..8295a4e5602ec4f32b42d861ba8b3d2c94f08002 100644 (file)
@@ -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
        }