Skip to content

Commit dbd5b5f

Browse files
committed
Revert "cgen: ensure variable names do not conflict with builtin methods (fix #25063) (#25178)"
This reverts commit f17e0fd.
1 parent e15d8fc commit dbd5b5f

File tree

4 files changed

+1
-416
lines changed

4 files changed

+1
-416
lines changed

vlib/v/gen/c/assign.v

Lines changed: 0 additions & 128 deletions
Original file line numberDiff line numberDiff line change
@@ -7,126 +7,6 @@ import v.ast
77
import v.util
88
import v.token
99

10-
fn (mut g Gen) resolve_var_method_conflict(var_name string, val ast.Expr) string {
11-
mut method_call := ast.CallExpr{}
12-
mut has_method_call := false
13-
mut receiver_type := ast.Type(0)
14-
mut method_name := ''
15-
match val {
16-
ast.ArrayInit {
17-
if var_name == 'new_array_from_c_array_noscan' {
18-
return '_var_${var_name}'
19-
}
20-
}
21-
ast.MapInit {
22-
if var_name == 'new_map_noscan_key_value' {
23-
return '_var_${var_name}'
24-
}
25-
}
26-
ast.CallExpr {
27-
if val.is_method {
28-
method_call = val
29-
has_method_call = true
30-
}
31-
}
32-
ast.UnsafeExpr {
33-
if val.expr is ast.CallExpr {
34-
call_expr := val.expr as ast.CallExpr
35-
if call_expr.is_method {
36-
method_call = call_expr
37-
has_method_call = true
38-
}
39-
} else if val.expr is ast.IndexExpr {
40-
index_expr := val.expr as ast.IndexExpr
41-
left_type := g.unwrap_generic(index_expr.left_type)
42-
left_sym := g.table.sym(left_type)
43-
type_name := left_sym.kind.str()
44-
if (index_expr.index is ast.RangeExpr && var_name == '${type_name}_slice')
45-
|| var_name in ['${type_name}_get', '${type_name}_at'] {
46-
return '_var_${var_name}'
47-
}
48-
}
49-
}
50-
ast.InfixExpr {
51-
receiver_type = val.left_type
52-
method_name = match val.op {
53-
.eq { '_eq' }
54-
.ne { '_ne' }
55-
.lt { '_lt' }
56-
.le { '_le' }
57-
.gt { '_gt' }
58-
.ge { '_ge' }
59-
.plus { '_plus' }
60-
.minus { '_minus' }
61-
.mul { '_mul' }
62-
.div { '_div' }
63-
.mod { '_mod' }
64-
else { '' }
65-
}
66-
has_method_call = method_name != '' && receiver_type != 0
67-
}
68-
ast.IndexExpr {
69-
left_type := g.unwrap_generic(val.left_type)
70-
left_sym := g.table.sym(left_type)
71-
type_name := left_sym.kind.str()
72-
if (val.index is ast.RangeExpr && var_name == '${type_name}_slice')
73-
|| var_name in ['${type_name}_get', '${type_name}_at'] {
74-
return '_var_${var_name}'
75-
}
76-
}
77-
else {}
78-
}
79-
if has_method_call {
80-
mut left_type := ast.Type(0)
81-
if method_call.left_type != 0 {
82-
left_type = g.unwrap_generic(method_call.left_type)
83-
method_name = method_call.name
84-
} else if receiver_type != 0 {
85-
left_type = g.unwrap_generic(receiver_type)
86-
}
87-
if left_type != 0 {
88-
left_sym := g.table.sym(left_type)
89-
final_left_sym := g.table.final_sym(left_type)
90-
if var_name == '${left_sym.cname}_${method_name}' {
91-
return '_var_${var_name}'
92-
}
93-
if final_left_sym.kind == .array && !(left_sym.kind == .alias
94-
&& left_sym.has_method(method_name)) {
95-
actual_method_name := match method_name {
96-
'repeat' {
97-
'repeat_to_depth'
98-
}
99-
'clone' {
100-
'clone_to_depth'
101-
}
102-
'pop_left' {
103-
'pop_left_noscan'
104-
}
105-
'pop' {
106-
'pop_noscan'
107-
}
108-
else {
109-
method_name
110-
}
111-
}
112-
if var_name == 'array_${actual_method_name}' {
113-
return '_var_${var_name}'
114-
}
115-
}
116-
if final_left_sym.kind == .map && !(left_sym.kind == .alias
117-
&& left_sym.has_method(method_name)) {
118-
if method_name in ['clone', 'move'] && var_name == 'map_${method_name}' {
119-
return '_var_${var_name}'
120-
}
121-
if method_name in ['keys', 'values'] && var_name == 'map_${method_name}' {
122-
return '_var_${var_name}'
123-
}
124-
}
125-
}
126-
}
127-
return var_name
128-
}
129-
13010
fn (mut g Gen) expr_with_opt_or_block(expr ast.Expr, expr_typ ast.Type, var_expr ast.Expr, ret_typ ast.Type,
13111
in_heap bool) {
13212
gen_or := expr is ast.Ident && expr.or_expr.kind != .absent
@@ -425,14 +305,6 @@ fn (mut g Gen) assign_stmt(node_ ast.AssignStmt) {
425305
is_va_list = left_sym.language == .c && left_sym.name == 'C.va_list'
426306
if mut left is ast.Ident {
427307
ident = left
428-
if is_decl && i < node.right.len {
429-
resolved_name := g.resolve_var_method_conflict(ident.name, node.right[i])
430-
if resolved_name != ident.name {
431-
g.transformed_var_names[ident.name] = resolved_name
432-
ident.name = resolved_name
433-
node.left[i] = ident
434-
}
435-
}
436308
g.curr_var_name << ident.name
437309
// id_info := ident.var_info()
438310
// var_type = id_info.typ

vlib/v/gen/c/autofree.v

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -242,8 +242,7 @@ fn (mut g Gen) autofree_var_call(free_fn_name string, v ast.Var) {
242242
af.writeln('\t\t${free_fn_name}((${base_type}*)${c_name(v.name)}.data); // autofreed option var ${g.cur_mod.name} ${g.is_builtin_mod}')
243243
af.writeln('\t}')
244244
} else if v.typ.idx() != ast.u8_type_idx {
245-
var_name := g.transformed_var_names[v.name] or { v.name }
246-
af.writeln('\t${free_fn_name}(&${c_name(var_name)}); // autofreed var ${g.cur_mod.name} ${g.is_builtin_mod}')
245+
af.writeln('\t${free_fn_name}(&${c_name(v.name)}); // autofreed var ${g.cur_mod.name} ${g.is_builtin_mod}')
247246
}
248247
}
249248
g.autofree_scope_stmts << af.str()

vlib/v/gen/c/cgen.v

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,6 @@ mut:
258258
autofree_methods map[ast.Type]string
259259
generated_free_methods map[ast.Type]bool
260260
autofree_scope_stmts []string
261-
transformed_var_names map[string]string
262261
use_segfault_handler bool = true
263262
test_function_names []string
264263
/////////
@@ -5262,7 +5261,6 @@ fn (mut g Gen) ident(node ast.Ident) {
52625261
return
52635262
}
52645263
mut name := if node.kind == .function { c_fn_name(node.name) } else { c_name(node.name) }
5265-
name = g.transformed_var_names[node.name] or { name }
52665264
if node.kind == .constant {
52675265
if g.pref.translated && !g.is_builtin_mod
52685266
&& !util.module_is_builtin(node.name.all_before_last('.')) {

0 commit comments

Comments
 (0)