Generalise Service Error Matcher Optics #878
Merged
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.
The service error matchers have a type annotation which restricts them to
AsError a => Getting (First ServiceError) a ServiceError
. Generalise the type signature to theAsError a => Fold a ServiceError
that they are, and update the generator to annotate generated matchers correctly also.The optics actually type-check as
AsError a => Traversal' a ServiceError
or evenAsError a => Prism' a ServiceError
, but because they usefiltered
internally, those optics are only lawful if data written back through them satisfies the predicate. Since their old type signature meant they were only usable for matching and nobody has complained, the ability to write back through them has probably not been missed.This means we'll have to regenerate everything again, so update botocore and configure new services too. Note that this time existing code will continue to work, but I'll aim to get the regeneration up ASAP.