Skip to content

Commit b79257b

Browse files
authored
v.type_resolver: cleanup get_generic_array_element_type (#23342)
1 parent c44570c commit b79257b

File tree

1 file changed

+11
-17
lines changed

1 file changed

+11
-17
lines changed

vlib/v/type_resolver/generic_resolver.v

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -86,38 +86,32 @@ pub fn (t &TypeResolver) is_generic_expr(node ast.Expr) bool {
8686

8787
// get_generic_array_fixed_element_type retrieves the plain element type from a nested fixed array [N][N]T -> T
8888
pub fn (t &TypeResolver) get_generic_array_fixed_element_type(array ast.ArrayFixed) ast.Type {
89-
mut cparam_elem_info := array as ast.ArrayFixed
90-
mut cparam_elem_sym := t.table.sym(cparam_elem_info.elem_type)
91-
mut typ := ast.void_type
89+
mut cparam_elem_info := array
90+
mut cparam_elem_sym := t.table.sym(array.elem_type)
9291
for {
93-
if cparam_elem_sym.kind == .array_fixed {
94-
cparam_elem_info = cparam_elem_sym.info as ast.ArrayFixed
92+
if mut cparam_elem_sym.info is ast.ArrayFixed {
93+
cparam_elem_info = cparam_elem_sym.info
9594
cparam_elem_sym = t.table.sym(cparam_elem_info.elem_type)
9695
} else {
9796
return cparam_elem_info.elem_type.set_nr_muls(0)
9897
}
9998
}
100-
return typ
99+
return ast.void_type
101100
}
102101

103102
// get_generic_array_element_type retrieves the plain element type from a nested array [][]T -> T
104103
pub fn (t &TypeResolver) get_generic_array_element_type(array ast.Array) ast.Type {
105-
mut cparam_elem_info := array as ast.Array
106-
mut cparam_elem_sym := t.table.sym(cparam_elem_info.elem_type)
107-
mut typ := ast.void_type
104+
mut cparam_elem_info := array
105+
mut cparam_elem_sym := t.table.sym(array.elem_type)
108106
for {
109-
if cparam_elem_sym.kind == .array {
110-
cparam_elem_info = cparam_elem_sym.info as ast.Array
107+
if mut cparam_elem_sym.info is ast.Array {
108+
cparam_elem_info = cparam_elem_sym.info
111109
cparam_elem_sym = t.table.sym(cparam_elem_info.elem_type)
112110
} else {
113-
typ = cparam_elem_info.elem_type
114-
if cparam_elem_info.elem_type.nr_muls() > 0 && typ.nr_muls() > 0 {
115-
typ = typ.set_nr_muls(0)
116-
}
117-
break
111+
return cparam_elem_info.elem_type.set_nr_muls(0)
118112
}
119113
}
120-
return typ
114+
return ast.void_type
121115
}
122116

123117
// resolve_args resolves the ast node types dynamically depending on its special meaning

0 commit comments

Comments
 (0)