@@ -675,11 +675,7 @@ fn (mut g Gen) gen_array_contains_methods() {
675
675
fn_name := '${left_type_str} _contains'
676
676
left_info := left_final_sym.info as ast.Array
677
677
mut elem_type_str := g.typ (left_info.elem_type)
678
- mut elem_sym := g.table.sym (left_info.elem_type)
679
- if elem_sym.kind == .alias {
680
- info := elem_sym.info as ast.Alias
681
- elem_sym = g.table.sym (info.parent_type)
682
- }
678
+ elem_sym := g.table.sym (left_info.elem_type)
683
679
if elem_sym.kind == .function {
684
680
left_type_str = 'Array_voidptr'
685
681
elem_type_str = 'voidptr'
@@ -707,6 +703,9 @@ fn (mut g Gen) gen_array_contains_methods() {
707
703
} else if elem_sym.kind == .sum_type && left_info.elem_type.nr_muls () == 0 {
708
704
ptr_typ := g.equality_fn (left_info.elem_type)
709
705
fn_builder.writeln ('\t\t if (${ptr_typ} _sumtype_eq((($elem_type_str *)a.data)[i], v)) {' )
706
+ } else if elem_sym.kind == .alias && left_info.elem_type.nr_muls () == 0 {
707
+ ptr_typ := g.equality_fn (left_info.elem_type)
708
+ fn_builder.writeln ('\t\t if (${ptr_typ} _alias_eq((($elem_type_str *)a.data)[i], v)) {' )
710
709
} else {
711
710
fn_builder.writeln ('\t\t if ((($elem_type_str *)a.data)[i] == v) {' )
712
711
}
@@ -757,11 +756,7 @@ fn (mut g Gen) gen_array_index_methods() {
757
756
fn_name := '${left_type_str} _index'
758
757
info := final_left_sym.info as ast.Array
759
758
mut elem_type_str := g.typ (info.elem_type)
760
- mut elem_sym := g.table.sym (info.elem_type)
761
- if elem_sym.kind == .alias {
762
- info_t := elem_sym.info as ast.Alias
763
- elem_sym = g.table.sym (info_t.parent_type)
764
- }
759
+ elem_sym := g.table.sym (info.elem_type)
765
760
if elem_sym.kind == .function {
766
761
left_type_str = 'Array_voidptr'
767
762
elem_type_str = 'voidptr'
@@ -790,6 +785,9 @@ fn (mut g Gen) gen_array_index_methods() {
790
785
} else if elem_sym.kind == .sum_type {
791
786
ptr_typ := g.equality_fn (info.elem_type)
792
787
fn_builder.writeln ('\t\t if (${ptr_typ} _sumtype_eq(*pelem, v)) {' )
788
+ } else if elem_sym.kind == .alias {
789
+ ptr_typ := g.equality_fn (info.elem_type)
790
+ fn_builder.writeln ('\t\t if (${ptr_typ} _alias_eq(*pelem, v)) {' )
793
791
} else {
794
792
fn_builder.writeln ('\t\t if (*pelem == v) {' )
795
793
}
0 commit comments