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