| // run | |
| // 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. | |
| // Verify that composite literals using selectors for | |
| // embedded fields are assembled correctly. | |
| package main | |
| import "fmt" | |
| type A struct { | |
| a int | |
| B | |
| } | |
| type B struct { | |
| b string | |
| C | |
| } | |
| type C struct { | |
| c any | |
| } | |
| func main() { | |
| eq(A{1, B{b: "foo"}}, A{a: 1, b: "foo"}) | |
| eq(A{B: B{C: C{c: "foo"}}}, A{c: "foo"}) | |
| eq(x, A{B: B{b: "foo"}}) | |
| } | |
| func eq(x, y any) { | |
| if x != y { | |
| panic(fmt.Sprintf("%v != %v", x, y)) | |
| } | |
| } | |
| // test global initializer | |
| var x = A{b: "foo"} |