From 5b071bfa88e3366dec768b9e3304f131b258835b Mon Sep 17 00:00:00 2001 From: Michael Fraenkel Date: Thu, 1 Mar 2018 09:26:38 -0500 Subject: [PATCH] cmd/compile: convert type during finishcompare When recursively calling walkexpr, r.Type is still the untyped value. It then sometimes recursively calls finishcompare, which complains that you can't compare the resulting expression to that untyped value. Updates #23834. Change-Id: I6b7acd3970ceaff8da9216bfa0ae24aca5dee828 Reviewed-on: https://go-review.googlesource.com/97856 Reviewed-by: Matthew Dempsky --- src/cmd/compile/internal/gc/walk.go | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/cmd/compile/internal/gc/walk.go b/src/cmd/compile/internal/gc/walk.go index ab113daec4..f1ef2341ee 100644 --- a/src/cmd/compile/internal/gc/walk.go +++ b/src/cmd/compile/internal/gc/walk.go @@ -3455,12 +3455,8 @@ func walkcompare(n *Node, init *Nodes) *Node { // n.Left = finishcompare(n.Left, x, r, init) func finishcompare(n, r *Node, init *Nodes) *Node { r = typecheck(r, Erv) + r = conv(r, n.Type) r = walkexpr(r, init) - if r.Type != n.Type { - r = nod(OCONVNOP, r, nil) - r.Type = n.Type - r = typecheck(r, Erv) - } return r } -- 2.50.0