Go code for unions generated by Thrift 0.9.3 fails to consider map/set/list fields of a union when enforcing that the number of fields set is 1. For example:
Produces Go code:
Due to this bug, Thrift will complain that a union with only the fields u1, u2, or u3 set has no fields set. And it will allow all four fields to be set.