mirror of
https://github.com/golang/go
synced 2024-11-26 02:07:57 -07:00
cmd/compile: fix ICE with parenthesized builtin calls
CL 419456 starts using lookupObj to find types2.Object associated with builtin functions. However, the new code does not un-parenthesized the callee expression, causing an ICE because of nil obj returned. Un-parenthesizing the callee expression fixes the problem. Fixes #63436 Change-Id: Iebb4fbc08575e7d0b1dbd026c98e8f949ca16460 Reviewed-on: https://go-review.googlesource.com/c/go/+/533476 Auto-Submit: Cuong Manh Le <cuong.manhle.vn@gmail.com> Reviewed-by: Keith Randall <khr@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Matthew Dempsky <mdempsky@google.com> Reviewed-by: Keith Randall <khr@golang.org>
This commit is contained in:
parent
f711892a8a
commit
2744155d36
@ -1909,7 +1909,7 @@ func (w *writer) expr(expr syntax.Expr) {
|
|||||||
|
|
||||||
var rtype types2.Type
|
var rtype types2.Type
|
||||||
if tv.IsBuiltin() {
|
if tv.IsBuiltin() {
|
||||||
switch obj, _ := lookupObj(w.p, expr.Fun); obj.Name() {
|
switch obj, _ := lookupObj(w.p, syntax.Unparen(expr.Fun)); obj.Name() {
|
||||||
case "make":
|
case "make":
|
||||||
assert(len(expr.ArgList) >= 1)
|
assert(len(expr.ArgList) >= 1)
|
||||||
assert(!expr.HasDots)
|
assert(!expr.HasDots)
|
||||||
|
9
test/fixedbugs/issue63436.go
Normal file
9
test/fixedbugs/issue63436.go
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
// compile
|
||||||
|
|
||||||
|
// Copyright 2023 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package p
|
||||||
|
|
||||||
|
var _ = (new)(int)
|
Loading…
Reference in New Issue
Block a user