Skip to content

Commit b79aa02

Browse files
authored
cgen: fix option cast from fntype (fix #22283, #22284) (#22285)
1 parent 8ff61ff commit b79aa02

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

vlib/v/gen/c/assign.v

+1-1
Original file line numberDiff line numberDiff line change
@@ -589,7 +589,7 @@ fn (mut g Gen) assign_stmt(node_ ast.AssignStmt) {
589589
}
590590
fn_name := c_fn_name(g.get_ternary_name(ident.name))
591591

592-
if val_type.has_flag(.option) && val is ast.SelectorExpr {
592+
if val_type.has_flag(.option) {
593593
ret_styp := g.typ(g.unwrap_generic(val_type))
594594
g.write('${ret_styp} ${fn_name}')
595595
} else {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
type DataFn = fn (name string) string
2+
3+
fn which_lang(name string) string {
4+
return name
5+
}
6+
7+
fn find_func(name string) ?DataFn {
8+
a := ?DataFn(which_lang)
9+
return a
10+
}
11+
12+
fn find_func2(name string) ?DataFn {
13+
a := if name == 'vlang' { ?DataFn(which_lang) } else { none }
14+
return a
15+
}
16+
17+
fn test_main() {
18+
if a := find_func('foo') {
19+
assert a('bar') == 'bar'
20+
}
21+
if b := find_func('foo') {
22+
assert b('bar') == 'bar'
23+
}
24+
}

0 commit comments

Comments
 (0)