mirror of https://github.com/golang/go.git
cmd/compile: fix importing rewritten f(g()) calls
golang.org/cl/166983 started serializing the Ninit field of OCALL nodes within function inline bodies (necessary to fix a regression in building crypto/ecdsa with -gcflags=-l=4), but this means the Ninit field needs to be typechecked when the imported function body is used. It's unclear why this wasn't necessary for the crypto/ecdsa regression. Fixes #30907. Change-Id: Id5f0bf3c4d17bbd6d5318913b859093c93a0a20c Reviewed-on: https://go-review.googlesource.com/c/go/+/168199 Run-TryBot: Matthew Dempsky <mdempsky@google.com> Reviewed-by: Robert Griesemer <gri@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
2c423f063b
commit
916e861fd9
|
|
@ -1239,6 +1239,7 @@ func typecheck1(n *Node, top int) (res *Node) {
|
|||
|
||||
// call and call like
|
||||
case OCALL:
|
||||
typecheckslice(n.Ninit.Slice(), ctxStmt) // imported rewritten f(g()) calls (#30907)
|
||||
n.Left = typecheck(n.Left, ctxExpr|Etype|ctxCallee)
|
||||
if n.Left.Diag() {
|
||||
n.SetDiag(true)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,19 @@
|
|||
// Copyright 2019 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 a
|
||||
|
||||
type UUID string
|
||||
|
||||
func New() UUID {
|
||||
return Must(NewRandom())
|
||||
}
|
||||
|
||||
func NewRandom() (UUID, error) {
|
||||
return "", nil
|
||||
}
|
||||
|
||||
func Must(uuid UUID, err error) UUID {
|
||||
return uuid
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
// Copyright 2019 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
|
||||
|
||||
import "./a"
|
||||
|
||||
func F() {
|
||||
a.New()
|
||||
}
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
// compiledir
|
||||
|
||||
// Copyright 2019 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 ignored
|
||||
Loading…
Reference in New Issue