| // 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) { |
| } |