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