From: Michael Fraenkel Date: Thu, 1 Mar 2018 14:26:38 +0000 (-0500) Subject: cmd/compile: convert type during finishcompare X-Git-Tag: go1.11beta1~1372 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=5b071bfa88e3366dec768b9e3304f131b258835b;p=gostls13.git 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 --- 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 }