63 lines
813 B
Go
63 lines
813 B
Go
// compile
|
|
|
|
// Copyright 2026 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.
|
|
|
|
// Issue 77635: test building values of zero-sized types.
|
|
|
|
package p
|
|
|
|
type T1 [2][0]int
|
|
type T2 [0][2]int
|
|
type T3 struct {
|
|
t T1
|
|
x *byte
|
|
}
|
|
type T4 struct {
|
|
t T2
|
|
x *byte
|
|
}
|
|
|
|
func f1(t T1) any {
|
|
return t
|
|
}
|
|
func f2(t T2) any {
|
|
return t
|
|
}
|
|
func f3(t T3) any {
|
|
return t
|
|
}
|
|
func f4(t T4) any {
|
|
return t
|
|
}
|
|
func f5(t T1) any {
|
|
return T3{t:t}
|
|
}
|
|
func f6(t T2) any {
|
|
return T4{t:t}
|
|
}
|
|
func f7(t T1) {
|
|
use(T3{t:t})
|
|
}
|
|
func f8(t T2) {
|
|
use(T4{t:t})
|
|
}
|
|
|
|
func g1(t T3, i int) {
|
|
t.t[i][i] = 1
|
|
}
|
|
func g2(t T4, i int) {
|
|
t.t[i][i] = 1
|
|
}
|
|
func g3(t *T3, i int) {
|
|
t.t[i][i] = 1
|
|
}
|
|
func g4(t *T4, i int) {
|
|
t.t[i][i] = 1
|
|
}
|
|
|
|
//go:noinline
|
|
func use(x any) {
|
|
}
|