vfmt: handle generic fn calls
parent
87d8e70d6d
commit
227f039652
|
@ -849,7 +849,13 @@ pub fn (mut f Fmt) call_expr(node ast.CallExpr) {
|
||||||
} else {
|
} else {
|
||||||
name := short_module(node.name)
|
name := short_module(node.name)
|
||||||
f.mark_module_as_used(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.call_args(node.args)
|
||||||
f.write(')')
|
f.write(')')
|
||||||
f.or_expr(node.or_block)
|
f.or_expr(node.or_block)
|
||||||
|
|
|
@ -5,11 +5,17 @@ fn simple<T>(p T) T {
|
||||||
return p
|
return p
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn plus<T>(a, b T) T {
|
||||||
|
// q := a + 1
|
||||||
|
return a + b
|
||||||
|
}
|
||||||
|
|
||||||
fn test_generic_fn() {
|
fn test_generic_fn() {
|
||||||
assert simple<int>(1) == 1
|
assert simple<int>(1) == 1
|
||||||
assert simple<int>(1 + 0) == 1
|
assert simple<int>(1 + 0) == 1
|
||||||
assert simple<string>('g') == 'g'
|
assert simple<string>('g') == 'g'
|
||||||
assert simple<string>('g') + 'h' == 'gh'
|
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
|
return r
|
||||||
}
|
}
|
||||||
|
|
||||||
fn plus<T>(a T, b T) T {
|
|
||||||
return a+b
|
|
||||||
}
|
|
||||||
|
|
||||||
fn square(x int) int {
|
fn square(x int) int {
|
||||||
return x*x
|
return x*x
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue