E = 99
}" parse-schema
] [ duplicate-values? ] must-fail-with
+
+! union checks
+
+[ "type Thing union {int=0|int|str=0}" parse-schema ] [ duplicate-keys? ] must-fail-with
+[ "type Thing union {int=0|uint|str=0}" parse-schema ] [ duplicate-values? ] must-fail-with
union-members = union-member (ws "|"~ ws union-member)* => [[ first2 swap prefix ]]
union-member = any-type (ws "="~ ws number)? => [[ >array ]]
union = "union"~ ws "{"~ ws ("|"?)~ ws union-members ws ("|"?)~ ws "}"~
- => [[ assign-values union boa ]]
+ => [[ assign-values check-duplicates union boa ]]
aggregate = optional|list|map|struct|union