summon sealed trait children definitions for Element Encoder/Decoder instead of auto-deriving#51
Merged
valentiay merged 2 commits intovalentiay:masterfrom Nov 16, 2025
Conversation
…instead of auto-deriving
mpipalovic
commented
Nov 14, 2025
modules/core/src/main/scala-3/phobos/decoding/ElementDerivedInstances.scala
Outdated
Show resolved
Hide resolved
829ae8a to
2b09cf1
Compare
2b09cf1 to
62956d6
Compare
valentiay
approved these changes
Nov 16, 2025
Owner
valentiay
left a comment
There was a problem hiding this comment.
Hi! Thanks for your contribution, this is an important fix
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Fixes #46
Notice that this is fixed solely by removing the LazySummon; as the only actual place to get an instance of LazySummon was from the ElementDerivedInstances. Meaning, alternative way of making this whole thing work (or fixing the issue at hand) would be by just adding the following:
(you can try this with code from master, and adding the new test with and without the code above)
so e.g. whenever there is a
ElementEncoder[T], there would also be anLazySummon[ElementDecoder, T].But since the name of the LazySummon is kind of misleading
So, it just becomes a wrapper that's making things more confusing for no reason with no purpose, so I just removed it
I left the current auto derivation logic for Enums. Also, notice that in case there exists an user provided instance for one of enum children - it would be used (since there's no longer this LazySummon indirection)