mirror of
https://github.com/golang/go
synced 2024-11-05 14:36:11 -07:00
e024ed5ca4
During anylit run, nodes such as SLICEARR(statictmp, [:]) may be generated and are expected to be found unchanged by gen_as_init. In some walks (in particular walkselect), the statement may be walked again and lowered to its usual form, leading to a crash. Fixes #8017. Fixes #8024. Fixes #8058. LGTM=rsc R=golang-codereviews, dvyukov, gobot, rsc CC=golang-codereviews https://golang.org/cl/112080043
27 lines
541 B
Go
27 lines
541 B
Go
// compile
|
|
|
|
// Copyright 2014 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.
|
|
|
|
// Issues 8017 and 8058: walk modifies nodes generated
|
|
// by slicelit and causes an internal error afterwards
|
|
// when gen_as_init parses it back.
|
|
|
|
package main
|
|
|
|
func F() {
|
|
var ch chan int
|
|
select {
|
|
case <-ch:
|
|
case <-make(chan int, len([2][]int{([][]int{})[len(ch)], []int{}})):
|
|
}
|
|
}
|
|
|
|
func G() {
|
|
select {
|
|
case <-([1][]chan int{[]chan int{}})[0][0]:
|
|
default:
|
|
}
|
|
}
|