Generate Arbitrary instance for all types #544
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.
Really not that hard in the end, just some plumbing and fussing with the code generation. They're now exported via an additional public library
lsp-types-quickcheck
.I also moved some of the mechanical stuff for generating extra instances just based on the type names (lenses, and now Arbitrary instances) to use TH, because that is better than the literal code generation approach when it's not horribly complicated.
I'm not yet making much use of this. The next step would be to e.g. generate tests for every type that check round-trips, but I think this is enough for now. There's also a bit of work to do to get arbitrary instances for all messages, but I'm going to do that later also.
Fixes #347