[ https://issues.apache.org/jira/browse/THRIFT-3051?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14387386#comment-14387386 ]
Silas Snider commented on THRIFT-3051: -------------------------------------- No: I took a look at the generator code, and a) I don't know C++ very well, b) even with the knowledge I do have, it's really non-obvious to me what to change, and c) I haven't gone through the process to get my employer's OK before contributing a patch, so that'd also lengthen the time it would take for me to submit one. Sorry. > Go Thrift generator creates bad go code > --------------------------------------- > > Key: THRIFT-3051 > URL: https://issues.apache.org/jira/browse/THRIFT-3051 > Project: Thrift > Issue Type: Bug > Components: Go - Compiler > Affects Versions: 0.9.2, 1.0 > Environment: Mac OS X 10.10.2 > Thrift 0.9.2 installed via homebrew, and Thrift HEAD (identifies as > 1.0.0-dev) installed via homebrew > Reporter: Silas Snider > > h2. Motivation > I was attempting to build a go tool that used the Apache Aurora thrift > interface, only to be stymied because thrift generates invalid code for the > current api.thrift interface. (found under > api/src/main/thrift/org/apache/aurora/gen/api.thrift) > h2. Steps to replicate > # Create a thrift file called test.thrift containing the text: > {code:title=test.thrift|borderStyle=solid} > struct Option1 { > } > struct Option2 { > 1: optional string name > } > union Descendant { > 1: Option1 option1 > 2: Option2 option2 > } > struct TestStruct { > 1: optional Descendant descendant = { "option1": {}} > } > {code} > # Run {{thrift -o somedir -r --gen go test.thrift}} > h2. Expected Result > The command indicates success, and the {{somedir}} directory contains a tree > of go code that successfully compiles. > h2. Actual Result > The above command outputs > {code} > /somedir/gen-go//test/ttypes.go:317:6: expected '}', found ':=' > /somedir/gen-go//test/ttypes.go:318:3: expected declaration, found 'IDENT' > descendant > WARNING - Running 'gofmt -w /somedir/gen-go//test/ttypes.go' failed. > {code} > The code fails to compile with similar errors. On inspection, it appears that > the go compiler outputs > {code:title=ttypes.go|borderStyle=solid} > var TestStruct_Descendant_DEFAULT *Descendant = &Descendant{ > v1 := &Option1{} > descendant.Option1 = v1} > {code} > which is entirely incorrect. This code should instead be > {code:title=ttypes.go|borderStyle=solid} > var TestStruct_Descendant_DEFAULT *Descendant = &Descendant{ > Option1: &Option1{}} > {code} > When this change is made, the compilation succeeds. -- This message was sent by Atlassian JIRA (v6.3.4#6332)