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") + } + } }