cgen: fix code generation for generic channels (#19993)

This commit is contained in:
Felipe Pena 2023-11-26 08:58:23 -03:00 committed by GitHub
parent e2aa9b358d
commit bc62c5cfd7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 1 deletions

View File

@ -922,7 +922,12 @@ pub fn (t &Table) chan_cname(elem_type Type, is_mut bool) string {
} else if elem_type.is_ptr() {
suffix = '_ptr'
}
return 'chan_${elem_type_sym.cname}' + suffix
type_name := if elem_type_sym.cname.contains('[') {
elem_type_sym.cname.replace_each(ast.map_cname_escape_seq)
} else {
elem_type_sym.cname
}
return 'chan_${type_name}' + suffix
}
@[inline]

View File

@ -0,0 +1,16 @@
struct Task[T] {
idx int
task T
}
fn check[T](input T) T {
ch := chan Task[T]{}
// do something with channel
ch.close()
return input
}
fn test_main() {
out := check[int](5)
assert out == 5
}