vfmt: handle generic fn calls
parent
87d8e70d6d
commit
227f039652
|
@ -849,7 +849,13 @@ pub fn (mut f Fmt) call_expr(node ast.CallExpr) {
|
|||
} else {
|
||||
name := short_module(node.name)
|
||||
f.mark_module_as_used(name)
|
||||
f.write('${name}(')
|
||||
f.write('${name}')
|
||||
if node.generic_type != 0 && node.generic_type != table.void_type {
|
||||
f.write('<')
|
||||
f.write(f.type_to_str(node.generic_type))
|
||||
f.write('>')
|
||||
}
|
||||
f.write('(')
|
||||
f.call_args(node.args)
|
||||
f.write(')')
|
||||
f.or_expr(node.or_block)
|
||||
|
|
|
@ -5,11 +5,17 @@ fn simple<T>(p T) T {
|
|||
return p
|
||||
}
|
||||
|
||||
fn plus<T>(a, b T) T {
|
||||
// q := a + 1
|
||||
return a + b
|
||||
}
|
||||
|
||||
fn test_generic_fn() {
|
||||
assert simple<int>(1) == 1
|
||||
assert simple<int>(1 + 0) == 1
|
||||
assert simple<string>('g') == 'g'
|
||||
assert simple<string>('g') + 'h' == 'gh'
|
||||
// plus<int>(2, 3)
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -37,10 +43,6 @@ fn foldl<T>(l []T, nil T, f fn(T,T)T) T {
|
|||
return r
|
||||
}
|
||||
|
||||
fn plus<T>(a T, b T) T {
|
||||
return a+b
|
||||
}
|
||||
|
||||
fn square(x int) int {
|
||||
return x*x
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue