Skip to content

Commit 431d806

Browse files
authored
ast, parser: cleanup of generic structs (#9839)
1 parent ba512a6 commit 431d806

File tree

8 files changed

+22
-22
lines changed

8 files changed

+22
-22
lines changed

vlib/v/ast/ast.v

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -228,10 +228,10 @@ pub mut:
228228

229229
pub struct StructDecl {
230230
pub:
231-
pos token.Position
232-
name string
233-
gen_types []Type
234-
is_pub bool
231+
pos token.Position
232+
name string
233+
generic_types []Type
234+
is_pub bool
235235
// _pos fields for vfmt
236236
mut_pos int // mut:
237237
pub_pos int // pub:

vlib/v/ast/table.v

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1066,17 +1066,17 @@ pub fn (mut t Table) generic_struct_insts_to_concrete() {
10661066
}
10671067
mut parent_info := parent.info as Struct
10681068
mut fields := parent_info.fields.clone()
1069-
if parent_info.generic_types.len == info.generic_types.len {
1069+
if parent_info.generic_types.len == info.concrete_types.len {
10701070
generic_names := parent_info.generic_types.map(t.get_type_symbol(it).name)
10711071
for i in 0 .. fields.len {
10721072
if t_typ := t.resolve_generic_to_concrete(fields[i].typ, generic_names,
1073-
info.generic_types)
1073+
info.concrete_types)
10741074
{
10751075
fields[i].typ = t_typ
10761076
}
10771077
}
10781078
parent_info.generic_types = []
1079-
parent_info.concrete_types = info.generic_types.clone()
1079+
parent_info.concrete_types = info.concrete_types.clone()
10801080
parent_info.fields = fields
10811081
parent_info.parent_type = new_type(info.parent_idx).set_flag(.generic)
10821082
typ.is_public = true

vlib/v/ast/types.v

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -730,8 +730,8 @@ pub mut:
730730
// instantiation of a generic struct
731731
pub struct GenericStructInst {
732732
pub mut:
733-
parent_idx int // idx of the base generic struct
734-
generic_types []Type
733+
parent_idx int // idx of the base generic struct
734+
concrete_types []Type // concrete types, e.g. <int, string>
735735
}
736736

737737
pub struct Interface {

vlib/v/checker/checker.v

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6429,11 +6429,11 @@ fn (mut c Checker) post_process_generic_fns() {
64296429
}
64306430
mut node := c.file.generic_fns[i]
64316431
c.mod = node.mod
6432-
for gen_types in c.table.fn_generic_types[node.name] {
6433-
node.cur_generic_types = gen_types
6432+
for generic_types in c.table.fn_generic_types[node.name] {
6433+
node.cur_generic_types = generic_types
64346434
c.fn_decl(mut node)
64356435
if node.name in ['vweb.run_app', 'vweb.run'] {
6436-
c.vweb_gen_types << gen_types
6436+
c.vweb_gen_types << generic_types
64376437
}
64386438
}
64396439
node.cur_generic_types = []

vlib/v/fmt/struct.v

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,9 +102,9 @@ pub fn (mut f Fmt) struct_decl(node ast.StructDecl) {
102102
f.write_language_prefix(node.language)
103103
name := node.name.after('.')
104104
f.write(name)
105-
if node.gen_types.len > 0 {
105+
if node.generic_types.len > 0 {
106106
f.write('<')
107-
gtypes := node.gen_types.map(f.table.type_to_str(it)).join(', ')
107+
gtypes := node.generic_types.map(f.table.type_to_str(it)).join(', ')
108108
f.write(gtypes)
109109
f.write('>')
110110
}

vlib/v/gen/c/fn.v

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -129,13 +129,13 @@ fn (mut g Gen) gen_fn_decl(node ast.FnDecl, skip bool) {
129129
// }
130130
if node.generic_names.len > 0 && g.cur_generic_types.len == 0 { // need the cur_generic_type check to avoid inf. recursion
131131
// loop thru each generic type and generate a function
132-
for gen_types in g.table.fn_generic_types[node.name] {
132+
for generic_types in g.table.fn_generic_types[node.name] {
133133
if g.pref.is_verbose {
134-
syms := gen_types.map(g.table.get_type_symbol(it))
134+
syms := generic_types.map(g.table.get_type_symbol(it))
135135
the_type := syms.map(node.name).join(', ')
136136
println('gen fn `$node.name` for type `$the_type`')
137137
}
138-
g.cur_generic_types = gen_types
138+
g.cur_generic_types = generic_types
139139
g.gen_fn_decl(node, skip)
140140
}
141141
g.cur_generic_types = []

vlib/v/parser/parse_type.v

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -481,7 +481,7 @@ pub fn (mut p Parser) parse_generic_struct_inst_type(name string) ast.Type {
481481
p.in_generic_params = true
482482
bs_name += '<'
483483
bs_cname += '_T_'
484-
mut generic_types := []ast.Type{}
484+
mut concrete_types := []ast.Type{}
485485
mut is_instance := false
486486
for p.tok.kind != .eof {
487487
gt := p.parse_type()
@@ -491,7 +491,7 @@ pub fn (mut p Parser) parse_generic_struct_inst_type(name string) ast.Type {
491491
gts := p.table.get_type_symbol(gt)
492492
bs_name += gts.name
493493
bs_cname += gts.cname
494-
generic_types << gt
494+
concrete_types << gt
495495
if p.tok.kind != .comma {
496496
break
497497
}
@@ -502,7 +502,7 @@ pub fn (mut p Parser) parse_generic_struct_inst_type(name string) ast.Type {
502502
p.check(.gt)
503503
p.in_generic_params = false
504504
bs_name += '>'
505-
if is_instance && generic_types.len > 0 {
505+
if is_instance && concrete_types.len > 0 {
506506
mut gt_idx := p.table.find_type_idx(bs_name)
507507
if gt_idx > 0 {
508508
return ast.new_type(gt_idx)
@@ -519,7 +519,7 @@ pub fn (mut p Parser) parse_generic_struct_inst_type(name string) ast.Type {
519519
mod: p.mod
520520
info: ast.GenericStructInst{
521521
parent_idx: parent_idx
522-
generic_types: generic_types
522+
concrete_types: concrete_types
523523
}
524524
})
525525
return ast.new_type(idx)

vlib/v/parser/struct.v

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,7 @@ fn (mut p Parser) struct_decl() ast.StructDecl {
332332
is_union: is_union
333333
attrs: attrs
334334
end_comments: end_comments
335-
gen_types: generic_types
335+
generic_types: generic_types
336336
embeds: embeds
337337
}
338338
}

0 commit comments

Comments
 (0)