mirror of
https://github.com/vlang/v.git
synced 2025-09-13 22:42:26 +03:00
v.type_resolver: cleanup get_generic_array_element_type (#23342)
This commit is contained in:
parent
c44570c471
commit
b79257b765
1 changed files with 11 additions and 17 deletions
|
@ -86,38 +86,32 @@ pub fn (t &TypeResolver) is_generic_expr(node ast.Expr) bool {
|
||||||
|
|
||||||
// get_generic_array_fixed_element_type retrieves the plain element type from a nested fixed array [N][N]T -> T
|
// get_generic_array_fixed_element_type retrieves the plain element type from a nested fixed array [N][N]T -> T
|
||||||
pub fn (t &TypeResolver) get_generic_array_fixed_element_type(array ast.ArrayFixed) ast.Type {
|
pub fn (t &TypeResolver) get_generic_array_fixed_element_type(array ast.ArrayFixed) ast.Type {
|
||||||
mut cparam_elem_info := array as ast.ArrayFixed
|
mut cparam_elem_info := array
|
||||||
mut cparam_elem_sym := t.table.sym(cparam_elem_info.elem_type)
|
mut cparam_elem_sym := t.table.sym(array.elem_type)
|
||||||
mut typ := ast.void_type
|
|
||||||
for {
|
for {
|
||||||
if cparam_elem_sym.kind == .array_fixed {
|
if mut cparam_elem_sym.info is ast.ArrayFixed {
|
||||||
cparam_elem_info = cparam_elem_sym.info as ast.ArrayFixed
|
cparam_elem_info = cparam_elem_sym.info
|
||||||
cparam_elem_sym = t.table.sym(cparam_elem_info.elem_type)
|
cparam_elem_sym = t.table.sym(cparam_elem_info.elem_type)
|
||||||
} else {
|
} else {
|
||||||
return cparam_elem_info.elem_type.set_nr_muls(0)
|
return cparam_elem_info.elem_type.set_nr_muls(0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return typ
|
return ast.void_type
|
||||||
}
|
}
|
||||||
|
|
||||||
// get_generic_array_element_type retrieves the plain element type from a nested array [][]T -> T
|
// get_generic_array_element_type retrieves the plain element type from a nested array [][]T -> T
|
||||||
pub fn (t &TypeResolver) get_generic_array_element_type(array ast.Array) ast.Type {
|
pub fn (t &TypeResolver) get_generic_array_element_type(array ast.Array) ast.Type {
|
||||||
mut cparam_elem_info := array as ast.Array
|
mut cparam_elem_info := array
|
||||||
mut cparam_elem_sym := t.table.sym(cparam_elem_info.elem_type)
|
mut cparam_elem_sym := t.table.sym(array.elem_type)
|
||||||
mut typ := ast.void_type
|
|
||||||
for {
|
for {
|
||||||
if cparam_elem_sym.kind == .array {
|
if mut cparam_elem_sym.info is ast.Array {
|
||||||
cparam_elem_info = cparam_elem_sym.info as ast.Array
|
cparam_elem_info = cparam_elem_sym.info
|
||||||
cparam_elem_sym = t.table.sym(cparam_elem_info.elem_type)
|
cparam_elem_sym = t.table.sym(cparam_elem_info.elem_type)
|
||||||
} else {
|
} else {
|
||||||
typ = cparam_elem_info.elem_type
|
return cparam_elem_info.elem_type.set_nr_muls(0)
|
||||||
if cparam_elem_info.elem_type.nr_muls() > 0 && typ.nr_muls() > 0 {
|
|
||||||
typ = typ.set_nr_muls(0)
|
|
||||||
}
|
|
||||||
break
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return typ
|
return ast.void_type
|
||||||
}
|
}
|
||||||
|
|
||||||
// resolve_args resolves the ast node types dynamically depending on its special meaning
|
// resolve_args resolves the ast node types dynamically depending on its special meaning
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue