diff --git a/vlib/compiler/table.v b/vlib/compiler/table.v index 405bad8070..8b97514423 100644 --- a/vlib/compiler/table.v +++ b/vlib/compiler/table.v @@ -446,7 +446,7 @@ fn (table mut Table) add_default_val(idx int, type_name, val_expr string) { mut t := table.typesmap[type_name] if t.default_vals.len == 0 { t.default_vals = [''].repeat(t.fields.len) - } + } t.default_vals[idx] = val_expr table.typesmap[type_name] = t } @@ -696,7 +696,7 @@ fn (p mut Parser) check_types2(got_, expected_ string, throw bool) bool { } expected = expected.replace('*', '') - got = got.replace('*', '') + got = got.replace('*', '').replace('ptr','') if got != expected { // Interface check if expected.ends_with('er') { diff --git a/vlib/compiler/tests/multiret_with_ptrtype.v b/vlib/compiler/tests/multiret_with_ptrtype.v new file mode 100644 index 0000000000..5e1f307eb3 --- /dev/null +++ b/vlib/compiler/tests/multiret_with_ptrtype.v @@ -0,0 +1,18 @@ +fn multi_voidptr_ret() (voidptr, bool) { + return voidptr(0), true +} + +fn multi_byteptr_ret() (byteptr, bool) { + return byteptr(0), true +} + +fn test_multi_ptrtype_ret() { + a, b := multi_voidptr_ret() + assert a == voidptr(0) + assert b == true + + c, d := multi_byteptr_ret() + assert c == byteptr(0) + assert d == true +} +