You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@thrift.apache.org by "James E. King, III (JIRA)" <ji...@apache.org> on 2017/12/14 13:56:17 UTC
[jira] [Closed] (THRIFT-4195) Compilation to GO produces broken
code
[ https://issues.apache.org/jira/browse/THRIFT-4195?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
James E. King, III closed THRIFT-4195.
--------------------------------------
> Compilation to GO produces broken code
> --------------------------------------
>
> Key: THRIFT-4195
> URL: https://issues.apache.org/jira/browse/THRIFT-4195
> Project: Thrift
> Issue Type: Bug
> Components: Go - Compiler
> Affects Versions: 0.10.0
> Environment: MacOS 10.12.4 (16E195)
> go version go1.8.1 darwin/amd64
> Reporter: Stanislav Baranov
> Priority: Critical
> Fix For: 0.11.0
>
> Attachments: GoUnusedProtection__.go, sample-consts.go, sample.go, sample.thrift
>
>
> Sample source file (see attached sample.thrift):
> {code}
> namespace go reports
> typedef string ReportState
> const ReportState ReportStateQueued = "QUEUED";
> const ReportState ReportStateCalculating = "CALCULATING";
> const ReportState ReportStateImporting = "IMPORTING";
> const ReportState ReportStateFinished = "FINISHED";
> const ReportState ReportStateFailed = "FAILED";
> struct ReportFilter {
> 1: i64 quantity,
> 2: i64 dataVersion,
> 3: string subscriptionID,
> 4: optional string principalID,
> 5: optional string createdOn,
> 6: optional list<ReportState> states,
> }
> {code}
> after compilation as:
> {{thrift -r -v -o ./ -out ./go --gen go:package_prefix="git.4tree.de/" ./sample.thrift}}
> Produces code (see attached sample.go) which contains:
> {code}
> func (p *ReportFilter) ReadField6(iprot thrift.TProtocol) error {
> _, size, err := iprot.ReadListBegin()
> if err != nil {
> return thrift.PrependError("error reading list begin: ", err)
> }
> tSlice := make([]ReportState, 0, size)
> p.States = tSlice
> for i := 0; i < size; i ++ {
> var _elem0 string
> if v, err := iprot.ReadString(); err != nil {
> return thrift.PrependError("error reading field 0: ", err)
> } else {
> _elem0 = v
> }
> p.States = append(p.States, _elem0)
> }
> if err := iprot.ReadListEnd(); err != nil {
> return thrift.PrependError("error reading list end: ", err)
> }
> return nil
> }
> {code}
> When trying to compile this code, GO triggers an error:
> {code}
> cannot use _elem0 (type string) as type ReportState in append
> {code}
> at line:
> {code}
> p.States = append(p.States, _elem0)
> {code}
> This code compiles normal using thrift 0.9.3
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)