mirror of
https://github.com/golang/go
synced 2024-11-18 10:04:43 -07:00
691e1b84c1
The previous fix to ensure early evaluation of lvalue-init statements (CL 312632) added it after we'd already peeled away any array-OINDEX expressions. But those might have init statements too, so we need to do this earlier actually and perhaps more than once. Longer term, lvalue expressions shouldn't have init statements anyway. But rsc and I both spent a while looking into this earlier in the dev cycle and couldn't come up with anything reasonable. Fixes #45706. Change-Id: I2d19c5ba421b3f019c62eec45774c84cf04b30ef Reviewed-on: https://go-review.googlesource.com/c/go/+/313011 Trust: Matthew Dempsky <mdempsky@google.com> Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com>
26 lines
405 B
Go
26 lines
405 B
Go
// compile
|
|
|
|
// 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 p
|
|
|
|
var i int
|
|
var arr []*int
|
|
var f func() int
|
|
|
|
func g() {
|
|
for i, *(arr[f()]) = range []int{} {
|
|
}
|
|
}
|
|
|
|
func h() {
|
|
var x int
|
|
var f func() int
|
|
var arr []int
|
|
var arr2 [][0]rune
|
|
for arr[x], arr2[arr[f()]][x] = range "" {
|
|
}
|
|
}
|