Skip to content

Commit 781d97d

Browse files
authored
cgen: fix C code, generated for generic option fixed array return type (fix #20465) (#20479)
1 parent 341e79f commit 781d97d

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

vlib/v/gen/c/fn.v

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,8 @@ fn (mut g Gen) gen_fn_decl(node &ast.FnDecl, skip bool) {
228228
mut type_name := g.typ(g.unwrap_generic(node.return_type))
229229

230230
ret_sym := g.table.sym(g.unwrap_generic(node.return_type))
231-
if node.return_type.has_flag(.generic) && ret_sym.kind == .array_fixed {
231+
if node.return_type.has_flag(.generic) && !node.return_type.has_flag(.option)
232+
&& ret_sym.kind == .array_fixed {
232233
type_name = '_v_${type_name}'
233234
} else if ret_sym.kind == .alias && !node.return_type.has_flag(.option) {
234235
unalias_typ := g.table.unaliased_type(node.return_type)
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
fn example[T]() ?T {
2+
return T{}
3+
}
4+
5+
fn test_main() {
6+
dump(example[[1]int]())
7+
8+
a := example[[1]int]()
9+
assert a? == [0]!
10+
}

0 commit comments

Comments
 (0)