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.
Instead of deriving instances for all datatype variables iterate over constructors generating instances based on how variables are used. Does the right thing in cases like
Does not add corresponding instance to the context for unused variables
Instead of generating
(ToJSON a)
fordata Foo a = Foo (SomeTypeFamily a)
generatesToJSON (SomeTypeFamily a)
Note that it slightly changes the behavior in cases like
will result in
ToJSON (Foo a)
constraint rather thanToJSON a
(current behavior). I believe the former is more precise as that is exactly what generated encoder wants. The small downside is requirement for FlexibleContext extension.TODO and open questions:
Are there any helpers to get easy access to instance context. I think it would be nice to have something like
Can add if required. But maybe there are already established approach to test that.
I sketched up some cases, but that list is not exhaustive. And they should be reworked according to previous point