Skip to content

Commit 1bfeda6

Browse files
authored
cgen: fix codegen for alias struct embed (fix #23347) (#23353)
1 parent c50d4ee commit 1bfeda6

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

vlib/v/gen/c/struct.v

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,11 @@ fn (mut g Gen) struct_init(node ast.StructInit) {
197197
embed_sym := g.table.sym(embed)
198198
embed_name := embed_sym.embed_name()
199199
if embed_name !in inited_fields {
200-
embed_info := embed_sym.info as ast.Struct
200+
embed_info := if embed_sym.info is ast.Struct {
201+
embed_sym.info
202+
} else {
203+
g.table.final_sym(embed).info as ast.Struct
204+
}
201205
embed_field_names := embed_info.fields.map(it.name)
202206
fields_to_embed := init_fields_to_embed.filter(it.name !in used_embed_fields
203207
&& it.name in embed_field_names)
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
struct Foo1 {}
2+
3+
type Foo2 = Foo1
4+
5+
struct Bar {
6+
Foo2
7+
}
8+
9+
fn test_main() {
10+
assert Bar{}.str() == 'Bar{
11+
Foo2: Foo2(Foo1{})
12+
}'
13+
}

0 commit comments

Comments
 (0)