Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Document pitfall with custom marshal/unmarshal implementations #329

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Commits on Feb 10, 2021

  1. Document pitfall with custom marshal/unmarshal implementations

    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.
    andrewmains12 committed Feb 10, 2021
    Configuration menu
    Copy the full SHA
    33a964a View commit details
    Browse the repository at this point in the history