@@ -86,38 +86,32 @@ pub fn (t &TypeResolver) is_generic_expr(node ast.Expr) bool {
86
86
87
87
// get_generic_array_fixed_element_type retrieves the plain element type from a nested fixed array [N][N]T -> T
88
88
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)
92
91
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
95
94
cparam_elem_sym = t.table.sym (cparam_elem_info.elem_type)
96
95
} else {
97
96
return cparam_elem_info.elem_type.set_nr_muls (0 )
98
97
}
99
98
}
100
- return typ
99
+ return ast.void_type
101
100
}
102
101
103
102
// get_generic_array_element_type retrieves the plain element type from a nested array [][]T -> T
104
103
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)
108
106
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
111
109
cparam_elem_sym = t.table.sym (cparam_elem_info.elem_type)
112
110
} 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 )
118
112
}
119
113
}
120
- return typ
114
+ return ast.void_type
121
115
}
122
116
123
117
// resolve_args resolves the ast node types dynamically depending on its special meaning
0 commit comments