Skip to content

Commit

Permalink
cgen: cleanup in method_call() (#22382)
Browse files Browse the repository at this point in the history
  • Loading branch information
yuyi98 authored Oct 1, 2024
1 parent 3faf06b commit 856fb8b
Showing 1 changed file with 9 additions and 17 deletions.
26 changes: 9 additions & 17 deletions vlib/v/gen/c/fn.v
Original file line number Diff line number Diff line change
Expand Up @@ -1008,11 +1008,6 @@ fn (mut g Gen) gen_map_method_call(node ast.CallExpr, left_type ast.Type, left_s
g.expr(node.args[0].expr)
g.write(')')
}
'free', 'clear' {
g.write('map_${node.name}(')
g.gen_arg_from_type(left_type, node.left)
g.write(')')
}
'delete' {
left_info := left_sym.info as ast.Map
elem_type_str := g.typ(left_info.key_type)
Expand All @@ -1022,7 +1017,7 @@ fn (mut g Gen) gen_map_method_call(node ast.CallExpr, left_type ast.Type, left_s
g.expr(node.args[0].expr)
g.write('})')
}
'keys', 'values' {
'free', 'clear', 'keys', 'values' {
g.write('map_${node.name}(')
g.gen_arg_from_type(left_type, node.left)
g.write(')')
Expand All @@ -1035,11 +1030,6 @@ fn (mut g Gen) gen_map_method_call(node ast.CallExpr, left_type ast.Type, left_s
}

fn (mut g Gen) gen_array_method_call(node ast.CallExpr, left_type ast.Type, left_sym ast.TypeSymbol) bool {
mut noscan := ''
array_info := left_sym.info as ast.Array
if node.name in ['pop', 'push', 'push_many', 'reverse', 'grow_cap', 'grow_len'] {
noscan = g.check_noscan(array_info.elem_type)
}
match node.name {
'filter' {
g.gen_array_filter(node)
Expand Down Expand Up @@ -1084,6 +1074,11 @@ fn (mut g Gen) gen_array_method_call(node ast.CallExpr, left_type ast.Type, left
g.write(')')
}
'first', 'last', 'pop' {
mut noscan := ''
array_info := left_sym.info as ast.Array
if node.name == 'pop' {
noscan = g.check_noscan(array_info.elem_type)
}
return_type_str := g.typ(node.return_type)
g.write('(*(${return_type_str}*)array_${node.name}${noscan}(')
if node.name == 'pop' {
Expand All @@ -1104,6 +1099,7 @@ fn (mut g Gen) gen_array_method_call(node ast.CallExpr, left_type ast.Type, left
g.write('))')
}
'clone', 'repeat' {
array_info := left_sym.info as ast.Array
array_depth := g.get_array_depth(array_info.elem_type)
to_depth := if array_depth >= 0 { '_to_depth' } else { '' }
mut is_range_slice := false
Expand Down Expand Up @@ -1785,12 +1781,8 @@ fn (mut g Gen) method_call(node ast.CallExpr) {
}
} else if !is_range_slice && node.from_embed_types.len == 0 && node.name != 'str' {
diff := left_type.nr_muls() - node.receiver_type.nr_muls()
if diff < 0 {
// TODO
// g.write('&')
} else if diff > 0 {
g.write('/*diff=${diff}*/')
g.write([]u8{len: diff, init: `*`}.bytestr())
if diff > 0 {
g.write('*'.repeat(diff))
}
}

Expand Down

0 comments on commit 856fb8b

Please sign in to comment.