Document pitfall with custom marshal/unmarshal implementations#329
Open
andrewmains12 wants to merge 1 commit intomailru:masterfrom
Open
Document pitfall with custom marshal/unmarshal implementations#329andrewmains12 wants to merge 1 commit intomailru:masterfrom
andrewmains12 wants to merge 1 commit intomailru:masterfrom
Conversation
I ran into what felt like a "gotcha" around custom marshal/unmarshal behavior today where `easyjson` continued generating MarshalEasyJSON and UnmarshalEasyJSON methods for my types even though I had defined them on my struct already, resulting in method redeclaration errors: ``` ./foo_easyjson.go:13:6: method redeclared: MyStruct.MarshalEasyJSON method(*MyStruct) func(*jwriter.Writer) method(MyStruct) func(*jwriter.Writer) ./foo_easyjson.go:14:20: (*MyStruct).UnmarshalEasyJSON redeclared in this block previous declaration at ./foo.go:16:6 ``` These were confusing to me, as I assumed that `easyjson` would check if the methods existed already before generating them. Once I thought it through, it was simple enough to work around with an //easyjson:skip; I documented that approach to hopefully save others (including future me ;)) time. There's probably a fix that could be applied within the code itself (i.e. don't generate if the method's defined), but I figure this is a quick fix.
Author
|
Btw I didn't see any contribution guides, but please feel free to point me to one as needed! |
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.
I ran into what felt like a "gotcha" around custom marshal/unmarshal behavior today where
easyjsoncontinued generatingMarshalEasyJSON and UnmarshalEasyJSON methods for my types even though I had defined them on my struct already, resulting in
method redeclaration errors:
These were confusing to me, as I assumed that
easyjsonwould check if the methods existed already before generating them.Once I thought it through, it was simple enough to work around with an //easyjson:skip; I documented that approach to hopefully save others (including future me ;)) time.
There's probably a fix that could be applied within the code itself (i.e. don't generate if the method's defined), but I figure this is a quick fix.