diff --git a/vlib/v/ast/table.v b/vlib/v/ast/table.v index 863c402d24..9e507b6fd8 100644 --- a/vlib/v/ast/table.v +++ b/vlib/v/ast/table.v @@ -230,11 +230,9 @@ pub fn (t &Table) fn_type_signature(f &Fn) string { if f.return_type != 0 && f.return_type != void_type { sym := t.sym(f.return_type) opt := if f.return_type.has_flag(.optional) { 'option_' } else { '' } - if sym.kind == .alias { - sig += '__$opt$sym.cname' - } else { - sig += '__$opt$sym.kind' - } + res := if f.return_type.has_flag(.result) { 'result_' } else { '' } + + sig += '__$opt$res$sym.cname' } return sig } diff --git a/vlib/v/tests/inout/dump_sumtype_of_fntype.out b/vlib/v/tests/inout/dump_sumtype_of_fntype.out new file mode 100644 index 0000000000..2c2128dccc --- /dev/null +++ b/vlib/v/tests/inout/dump_sumtype_of_fntype.out @@ -0,0 +1 @@ +[vlib/v/tests/inout/dump_sumtype_of_fntype.vv:10] main.MyFnSumtype(main.f): MyFnSumtype(fn (int) v.ast.Expr) diff --git a/vlib/v/tests/inout/dump_sumtype_of_fntype.vv b/vlib/v/tests/inout/dump_sumtype_of_fntype.vv new file mode 100644 index 0000000000..38f4449a66 --- /dev/null +++ b/vlib/v/tests/inout/dump_sumtype_of_fntype.vv @@ -0,0 +1,11 @@ +import v.ast + +type MyFnSumtype = fn () | fn (int) ast.Expr + +fn f(z int) ast.Expr { + return ast.empty_expr +} + +fn main() { + dump(MyFnSumtype(f)) +}