[
https://issues.apache.org/jira/browse/THRIFT-4650?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16648670#comment-16648670
]
Craig W commented on THRIFT-4650:
---------------------------------
No problem, I was going to attempt to work on it. The first step I took was
trying to run the [unit
tests]([https://github.com/apache/thrift/blob/master/build/docker/README.md#building-like-travis-ci-does-locally)]
in docker, but they failed (granted it was the master branch). I checked out
the 0.11.0 tag and the tests still didn't work, so I wasn't sure how to
continue. I thought getting the tests to pass before making changes would be
ideal.
Any suggestions? Thanks!
> Required field incorrectly marked as set when fieldType does not match
> ----------------------------------------------------------------------
>
> Key: THRIFT-4650
> URL: https://issues.apache.org/jira/browse/THRIFT-4650
> Project: Thrift
> Issue Type: Bug
> Components: Go - Compiler
> Affects Versions: 0.11.0
> Reporter: Craig W
> Priority: Major
>
> The "Read" function that gets generated incorrectly marks required fields as
> being set when the type of the field does not match what's expected.
> {{For example, the following IDL:}}
> {{struct Foo {}}
> {{ 1: required string id}}
> {{}}}
> {{The generated Read function has the following:}}
> {{switch fieldId {}}
> {{ case 1:}}
> {{ if fieldTypeId == thrift.STRING {}}
> {{ if err := p.ReadField1(iprot); err != nil {}}
> {{ return err}}
> }
> {{ } else {}}
> {{ if err := iprot.Skip(fieldTypeId); err != nil {}}
> {{ return err}}
> }
> }
> {{ issetID = true}}
> {{}}}
> {{I ran into a case where I attempted to deserialize another message type
> into type Foo, and I expected it to return an error, but it did not.}}
> f : = Foo{}
> err := thrift.NewTDeserializer().Read(&f, bytes)
> {{I think [this
> code|https://github.com/apache/thrift/blob/master/compiler/cpp/src/thrift/generate/t_go_generator.cc#L1600]
> in the generator needs to be moved inside the first "if" block, so that its
> only set to true if it actually reads the data of the correct type.}}
> {{ }}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)