There are many thing they could have done. Maybe handle both cases the same, using 'in-order' matching for the first unnamed case. Or since they like regenerating source, spitting out :
Valid source:
t := T{"example", 123, ""}
or
t := T{"", 123, "example"}
Using some kind of unification of set(String, Int, String) with set("example"::String, 123::Int)