Open Feoramund opened 2 months ago
So this is actually tricky to handle correctly because it has to do a best fit search, and currently it does the "first fit" search. In the case other structs, a missing field might not be an error, so it just gets ignored.
Context
json.unmarshal
seems to be ignoring alternative structs in a union, because if it doesn't find the fields it's looking for on the first struct variant it tries, it parses it as any value, skipping the other possibilities.https://github.com/odin-lang/Odin/blob/5b6c96cd18af9818c37ecdef5130d79ca7149b87/core/encoding/json/unmarshal.odin#L461-L474
Expected Behavior
JSON unmarshalling to
B
instead ofA
, or some sort of error/advisory/workaround.Current Behavior
Invalid type assertion from U to B, actual type: A
Failure Information (for bugs)
Steps to Reproduce