Fixes for iron derivation for GreaterEqual, LessEqual, In #3790
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
These fixes should address issues reported here: https://softwaremill.community/t/how-to-improve-open-api-documentation-for-iron-refined-types/396/9
LessEqual
andGreaterEqual
validators aren't resolved correctly if these predicates are combined with other predicates usingOr
orAnd
. They would be handled byvalidatorForDescribedOr
, so I added variants calledvalidatorForDescribedOrGe
andvalidatorForDescribedOrLe
witch additional "witnesses" likeisGe: P =:= GreaterEqual[Num]
to redirect back tovalidatorForGreaterEqual
andvalidatorForLessEqual
.Constraint
In[(1, 2, 3)]
was handled as a standard union type constraint, resulting in a list of validators, where each validator was aValidator.enumeration(List(int))
with a single value in the list. I have added some tweaks to fix this:In[(a, b, c, d)]
are now represented as a singleValidator.enumeration(List(a, b, c, d))
StrictEquals[1] | StrictEquals[2]
will also produce a single enumerationStrictEquals
and other constrains are also supported, as long asStrictEquals
are the first constrains in the union, for example:StrictEquals[3] | StrictEquals[4] | GreaterEqual[23]
will give aValidator.Enumeration(List(3, 4), _, _), Validator.Min(23, false))