mirror of
https://github.com/vlang/v.git
synced 2025-09-13 14:32:26 +03:00
parent
8ff61ffeab
commit
b79aa0208f
2 changed files with 25 additions and 1 deletions
|
@ -589,7 +589,7 @@ fn (mut g Gen) assign_stmt(node_ ast.AssignStmt) {
|
||||||
}
|
}
|
||||||
fn_name := c_fn_name(g.get_ternary_name(ident.name))
|
fn_name := c_fn_name(g.get_ternary_name(ident.name))
|
||||||
|
|
||||||
if val_type.has_flag(.option) && val is ast.SelectorExpr {
|
if val_type.has_flag(.option) {
|
||||||
ret_styp := g.typ(g.unwrap_generic(val_type))
|
ret_styp := g.typ(g.unwrap_generic(val_type))
|
||||||
g.write('${ret_styp} ${fn_name}')
|
g.write('${ret_styp} ${fn_name}')
|
||||||
} else {
|
} else {
|
||||||
|
|
24
vlib/v/tests/options/option_fntype_assign_test.v
Normal file
24
vlib/v/tests/options/option_fntype_assign_test.v
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
type DataFn = fn (name string) string
|
||||||
|
|
||||||
|
fn which_lang(name string) string {
|
||||||
|
return name
|
||||||
|
}
|
||||||
|
|
||||||
|
fn find_func(name string) ?DataFn {
|
||||||
|
a := ?DataFn(which_lang)
|
||||||
|
return a
|
||||||
|
}
|
||||||
|
|
||||||
|
fn find_func2(name string) ?DataFn {
|
||||||
|
a := if name == 'vlang' { ?DataFn(which_lang) } else { none }
|
||||||
|
return a
|
||||||
|
}
|
||||||
|
|
||||||
|
fn test_main() {
|
||||||
|
if a := find_func('foo') {
|
||||||
|
assert a('bar') == 'bar'
|
||||||
|
}
|
||||||
|
if b := find_func('foo') {
|
||||||
|
assert b('bar') == 'bar'
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue