diff --git a/vlib/arrays/arrays_test.v b/vlib/arrays/arrays_test.v index 1d88fcf4c4..74eb69b7d3 100644 --- a/vlib/arrays/arrays_test.v +++ b/vlib/arrays/arrays_test.v @@ -293,3 +293,10 @@ fn test_can_copy_bits() { // map not copyable assert !can_copy_bits() } + +type Str = string + +fn test_alias_string_contains() { + names := [Str('')] + assert (Str('') in names) == true +} diff --git a/vlib/v/gen/c/array.v b/vlib/v/gen/c/array.v index 86dd3ea40b..ef32a7e9c4 100644 --- a/vlib/v/gen/c/array.v +++ b/vlib/v/gen/c/array.v @@ -673,7 +673,11 @@ fn (mut g Gen) gen_array_contains_methods() { fn_name := '${left_type_str}_contains' left_info := left_final_sym.info as ast.Array mut elem_type_str := g.typ(left_info.elem_type) - elem_sym := g.table.sym(left_info.elem_type) + mut elem_sym := g.table.sym(left_info.elem_type) + if elem_sym.kind == .alias { + info := elem_sym.info as ast.Alias + elem_sym = g.table.sym(info.parent_type) + } if elem_sym.kind == .function { left_type_str = 'Array_voidptr' elem_type_str = 'voidptr' @@ -751,7 +755,11 @@ fn (mut g Gen) gen_array_index_methods() { fn_name := '${left_type_str}_index' info := final_left_sym.info as ast.Array mut elem_type_str := g.typ(info.elem_type) - elem_sym := g.table.sym(info.elem_type) + mut elem_sym := g.table.sym(info.elem_type) + if elem_sym.kind == .alias { + info_t := elem_sym.info as ast.Alias + elem_sym = g.table.sym(info_t.parent_type) + } if elem_sym.kind == .function { left_type_str = 'Array_voidptr' elem_type_str = 'voidptr'