| 1 | type TestSum = int | string |
| 2 | |
| 3 | struct Abc { |
| 4 | s TestSum |
| 5 | t TestSum |
| 6 | } |
| 7 | |
| 8 | fn get_value[T](obj T) string { |
| 9 | $for field in T.fields { |
| 10 | field_value := obj.$(field.name) |
| 11 | $if field_value is $sumtype { |
| 12 | $for field_variant in field_value.variants { |
| 13 | if field_value is field_variant { |
| 14 | dump(field_value) |
| 15 | $if field_value is $int { |
| 16 | dump('${field_value} is an int') |
| 17 | } $else $if field_value is $string { |
| 18 | dump('${field_value} is a string') |
| 19 | } |
| 20 | } |
| 21 | } |
| 22 | } |
| 23 | } |
| 24 | return 'done' |
| 25 | } |
| 26 | |
| 27 | fn main() { |
| 28 | a := Abc{ |
| 29 | s: TestSum('foo') |
| 30 | t: TestSum(1) |
| 31 | } |
| 32 | v := get_value(a) |
| 33 | dump(v) |
| 34 | } |
| 35 | |