Skip to content

Commit 3b0cfbf

Browse files
authored
cgen: fix codegen for indexing anon_fn (fix #23493) (#23495)
1 parent d5aa37d commit 3b0cfbf

2 files changed

Lines changed: 22 additions & 1 deletion

File tree

vlib/v/gen/c/assign.v

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -444,7 +444,7 @@ fn (mut g Gen) assign_stmt(node_ ast.AssignStmt) {
444444
g.is_assign_lhs = false
445445
g.is_arraymap_set = false
446446
if mut left is ast.IndexExpr {
447-
sym := g.table.sym(left.left_type)
447+
sym := g.table.final_sym(left.left_type)
448448
if sym.kind in [.map, .array] {
449449
g.expr(val)
450450
g.writeln('});')
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
module main
2+
3+
pub struct Tree {}
4+
5+
pub type TreeBelt = map[string]fn (input &Tree, belt TreeBelt) []&Tree
6+
7+
pub fn (tree &Tree) processed() TreeBelt {
8+
mut blet := TreeBelt(map[string]fn (&Tree, TreeBelt) []&Tree{})
9+
blet['foo'] = fn (input &Tree, belt TreeBelt) []&Tree {
10+
return [input]
11+
}
12+
return blet
13+
}
14+
15+
fn test_main() {
16+
tree := Tree{}
17+
ret := tree.processed()
18+
assert ret.len == 1
19+
ret2 := ret['foo'](tree, ret)
20+
assert ret2[0] == tree
21+
}

0 commit comments

Comments
 (0)