cgen: fix codegen for alias struct embed (fix #23347) (#23353)

This commit is contained in:
Felipe Pena 2025-01-03 13:01:25 -03:00 committed by GitHub
parent c50d4ee13b
commit 1bfeda6256
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 18 additions and 1 deletions

View File

@ -197,7 +197,11 @@ fn (mut g Gen) struct_init(node ast.StructInit) {
embed_sym := g.table.sym(embed)
embed_name := embed_sym.embed_name()
if embed_name !in inited_fields {
embed_info := embed_sym.info as ast.Struct
embed_info := if embed_sym.info is ast.Struct {
embed_sym.info
} else {
g.table.final_sym(embed).info as ast.Struct
}
embed_field_names := embed_info.fields.map(it.name)
fields_to_embed := init_fields_to_embed.filter(it.name !in used_embed_fields
&& it.name in embed_field_names)

View File

@ -0,0 +1,13 @@
struct Foo1 {}
type Foo2 = Foo1
struct Bar {
Foo2
}
fn test_main() {
assert Bar{}.str() == 'Bar{
Foo2: Foo2(Foo1{})
}'
}