diff --git a/vlib/builtin/array_index_test.v b/vlib/builtin/array_index_test.v new file mode 100644 index 0000000000..913ec4f1d0 --- /dev/null +++ b/vlib/builtin/array_index_test.v @@ -0,0 +1,35 @@ +fn test_index_of_ints() { + ia := [1, 2, 3] + ii := ia.index(2) + dump(ii) + assert ii == 1 +} + +fn test_index_of_strings() { + sa := ['a', 'b', 'c'] + si := sa.index('b') + dump(si) + assert si == 1 +} + +fn test_index_of_voidptrs() { + pa := [voidptr(123), voidptr(45), voidptr(99)] + pi := pa.index(voidptr(45)) + dump(pi) + assert pi == 1 +} + +////////// + +fn a() {} + +fn b() {} + +fn c() {} + +fn test_index_of_fns() { + fa := [a, b, c] + fi := fa.index(b) + dump(fi) + assert fi == 1 +} diff --git a/vlib/v/gen/c/array.v b/vlib/v/gen/c/array.v index 43d049c9db..8dc4a49655 100644 --- a/vlib/v/gen/c/array.v +++ b/vlib/v/gen/c/array.v @@ -1061,7 +1061,7 @@ fn (mut g Gen) gen_array_index_methods() { ptr_typ := g.equality_fn(info.elem_type) fn_builder.writeln('\t\tif (${ptr_typ}_arr_eq(*pelem, v)) {') } else if elem_sym.kind == .function && !info.elem_type.is_ptr() { - fn_builder.writeln('\t\tif ( pelem == v) {') + fn_builder.writeln('\t\tif ( *pelem == v) {') } else if elem_sym.kind == .map && !info.elem_type.is_ptr() { ptr_typ := g.equality_fn(info.elem_type) fn_builder.writeln('\t\tif (${ptr_typ}_map_eq((*pelem, v))) {')