From 286a79658efbe6dcbea53aaf8112abeb8e9f2cc3 Mon Sep 17 00:00:00 2001 From: Cuong Manh Le Date: Tue, 24 Mar 2026 21:14:30 +0700 Subject: cmd/compile: fix missing walk for OAS2RECV node When channel receive operator is used in the context that requires conversion to destination type, there's an implicit conversion operator inserted by typecheck. This typecheck-ed node is un-walked, then passing to the backend as-is, causing the ICE. Fixes #78313 Change-Id: Ibbc70cbd2d8069cc7cf81934406aa68c4da2686a Reviewed-on: https://go-review.googlesource.com/c/go/+/758660 Reviewed-by: Keith Randall Auto-Submit: Cuong Manh Le Reviewed-by: Dmitri Shuralyov Reviewed-by: Jakub Ciolek Reviewed-by: Keith Randall LUCI-TryBot-Result: Go LUCI --- src/cmd/compile/internal/walk/assign.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/cmd/compile/internal/walk/assign.go b/src/cmd/compile/internal/walk/assign.go index f640cd83d1..35eb72f0d0 100644 --- a/src/cmd/compile/internal/walk/assign.go +++ b/src/cmd/compile/internal/walk/assign.go @@ -220,7 +220,7 @@ func walkAssignRecv(init *ir.Nodes, n *ir.AssignListStmt) ir.Node { fn := chanfn("chanrecv2", 2, r.X.Type()) ok := n.Lhs[1] call := mkcall1(fn, types.Types[types.TBOOL], init, r.X, n1) - return typecheck.Stmt(ir.NewAssignStmt(base.Pos, ok, call)) + return walkAssign(init, typecheck.Stmt(ir.NewAssignStmt(base.Pos, ok, call))) } // walkReturn walks an ORETURN node. -- cgit v1.3-5-g9baa