| 1 | type TestSum = int | string |
| 2 | |
| 3 | fn gen[T, R](sum T) R { |
| 4 | $if T is $sumtype { |
| 5 | $for v in sum.variants { |
| 6 | if sum is v { |
| 7 | $if sum is R { |
| 8 | return sum |
| 9 | } |
| 10 | } |
| 11 | } |
| 12 | } |
| 13 | return R{} |
| 14 | } |
| 15 | |
| 16 | fn test_main() { |
| 17 | assert dump(gen[TestSum, string](TestSum('foo'))) == 'foo' |
| 18 | assert dump(gen[TestSum, int](TestSum(123))) == 123 |
| 19 | } |
| 20 |