Skip to content

Conversation

@andrewmains12
Copy link

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.

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
Copy link
Author

Btw I didn't see any contribution guides, but please feel free to point me to one as needed!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant