tests: add a regression test for the inter module generics inference
							parent
							
								
									a7d917474d
								
							
						
					
					
						commit
						fe0ded9a91
					
				| 
						 | 
				
			
			@ -0,0 +1,8 @@
 | 
			
		|||
module genericmodule
 | 
			
		||||
 | 
			
		||||
pub fn take<T>(a bool, b T, c T) T {
 | 
			
		||||
	if a {
 | 
			
		||||
		return b
 | 
			
		||||
	}
 | 
			
		||||
	return c
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,35 @@
 | 
			
		|||
module main
 | 
			
		||||
 | 
			
		||||
import genericmodule
 | 
			
		||||
 | 
			
		||||
fn test_generic_function_from_another_module() {
 | 
			
		||||
	v1 := genericmodule.take<int>(true, 10, 20)
 | 
			
		||||
	assert typeof(v1) == 'int'
 | 
			
		||||
	assert v1 == 10
 | 
			
		||||
	v2 := genericmodule.take<int>(false, 10, 20)
 | 
			
		||||
	assert v2 == 20
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fn test_generic_type_inference_from_another_module() {
 | 
			
		||||
	v1 := genericmodule.take(true, 10, 20)
 | 
			
		||||
	assert typeof(v1) == 'int'
 | 
			
		||||
	assert v1 == 10
 | 
			
		||||
	v2 := genericmodule.take(false, 10, 20)
 | 
			
		||||
	assert v2 == 20
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fn test_inference_with_strings() {
 | 
			
		||||
	v1 := genericmodule.take(true, 'abc', 'def')
 | 
			
		||||
	assert typeof(v1) == 'string'
 | 
			
		||||
	assert v1 == 'abc'
 | 
			
		||||
	v2 := genericmodule.take(false, 'abc', 'def')
 | 
			
		||||
	assert v2 == 'def'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fn test_inference_with_f64() {
 | 
			
		||||
	v1 := genericmodule.take(true, f64(123), 345)
 | 
			
		||||
	assert typeof(v1) == 'f64'
 | 
			
		||||
	assert v1 == 123
 | 
			
		||||
	v2 := genericmodule.take(false, f64(123), 345)
 | 
			
		||||
	assert v2 == 345
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue