mirror of
https://github.com/golang/go
synced 2024-11-02 11:50:30 +00:00
8486ced8b0
When starting a closure that needs a dictionary, copy the closure variable to a local variable. This lets child closures capture that dictionary variable correctly. This is a better fix for #47684, which does not cause problems like #47723. Fixes #47723 Update #47684 Change-Id: Ib5d9ffc68a5142e28daa7d0d75683e7a35508540 Reviewed-on: https://go-review.googlesource.com/c/go/+/343871 Trust: Keith Randall <khr@golang.org> Trust: Dan Scales <danscales@google.com> Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Dan Scales <danscales@google.com>
23 lines
364 B
Go
23 lines
364 B
Go
// run -gcflags=-G=3
|
|
|
|
// Copyright 2021 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 main
|
|
|
|
func f[_ any]() int {
|
|
var a [1]int
|
|
_ = func() int {
|
|
return func() int {
|
|
return 0
|
|
}()
|
|
}()
|
|
return a[func() int {
|
|
return 0
|
|
}()]
|
|
}
|
|
|
|
func main() {
|
|
f[int]()
|
|
}
|