From 0f31d742cdfda3af6b56c61a765c8df76053cf0a Mon Sep 17 00:00:00 2001 From: Cuong Manh Le Date: Fri, 26 Sep 2025 18:07:18 +0700 Subject: [PATCH] cmd/compile: fix ICE with new() Fixes #75617 Change-Id: Iaee7d4556db54b9999f5ba8458e7c05c11ccfc36 Reviewed-on: https://go-review.googlesource.com/c/go/+/707075 Reviewed-by: Junyang Shao LUCI-TryBot-Result: Go LUCI Auto-Submit: Cuong Manh Le Reviewed-by: Alan Donovan --- src/cmd/compile/internal/noder/reader.go | 1 + test/newexpr.go | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/src/cmd/compile/internal/noder/reader.go b/src/cmd/compile/internal/noder/reader.go index ca7c6bf1515..41eb2dce1cc 100644 --- a/src/cmd/compile/internal/noder/reader.go +++ b/src/cmd/compile/internal/noder/reader.go @@ -2434,6 +2434,7 @@ func (r *reader) expr() (res ir.Node) { if r.Bool() { // new(expr) -> tmp := expr; &tmp x := r.expr() + x = typecheck.DefaultLit(x, nil) // See TODO in exprConvert case. var init ir.Nodes addr := ir.NewAddrExpr(pos, r.tempCopy(pos, x, &init)) addr.SetInit(init) diff --git a/test/newexpr.go b/test/newexpr.go index 7deffae38fb..c9a8804d4eb 100644 --- a/test/newexpr.go +++ b/test/newexpr.go @@ -29,4 +29,11 @@ func main() { panic("wrong value") } } + { + var i int + v := new(i > 0) // untyped expression, see issue #75617 + if *v != false { + panic("wrong value") + } + } }