Stanislav Baranov created THRIFT-4195: -----------------------------------------
Summary: 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 Sample source file: {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 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: {{cannot use _elem0 (type string) as type ReportState in append }} This code compiles normal using thrift 0.9.3 -- This message was sent by Atlassian JIRA (v6.3.15#6346)