Skip to content

Commit 4d74d72

Browse files
authored
parser: fix generics method chaining call (#22447)
1 parent 9d164d0 commit 4d74d72

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed

vlib/v/parser/parse_type.v

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -835,6 +835,7 @@ fn (mut p Parser) find_type_or_add_placeholder(name string, language ast.Languag
835835
...sym
836836
name: sym_name
837837
rname: sym.name
838+
parent_idx: sym.idx
838839
generic_types: p.init_generic_types.clone()
839840
})
840841
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
struct Seq[T] {
2+
ar []T
3+
}
4+
5+
type MapFn[T, K] = fn (T) K
6+
7+
fn (s Seq[T]) map[K](map_fn MapFn[T, K]) Seq[K] {
8+
mut map_ar := []K{cap: s.ar.len}
9+
10+
for _, i in s.ar {
11+
map_ar << map_fn[T, K](i)
12+
}
13+
14+
return Seq[K]{map_ar}
15+
}
16+
17+
fn test_generics_method_chaining_call() {
18+
s := Seq[string]{['one', 'two']}
19+
.map[int](fn (element string) int {
20+
match element {
21+
'one' { return 1 }
22+
'two' { return 2 }
23+
else { return -1 }
24+
}
25+
})
26+
.map[int](fn (element int) int {
27+
return element + 2
28+
})
29+
30+
println(s)
31+
assert s.ar == [3, 4]
32+
}

0 commit comments

Comments
 (0)