Yuxuan Wang created THRIFT-5685:
-----------------------------------
Summary: Compiler generates wrong go code for forward defined
types in optional fields
Key: THRIFT-5685
URL: https://issues.apache.org/jira/browse/THRIFT-5685
Project: Thrift
Issue Type: Bug
Components: Go - Compiler
Affects Versions: 0.18.0
Reporter: Yuxuan Wang
Assignee: Yuxuan Wang
This is a bug introduced by the fix of THRIFT-5601.
Given this thrift file:
{code:java}
struct Bar {
1: optional Foo bar
}
struct Foo {
1: optional i64 foo
}
{code}
0.18.0 with b39370ec3bc96d2 reverted will generate the following go code
(expected):
{code:go}
...
-var Bar_Bar_DEFAULT *Foo
-func (p *Bar) GetBar() *Foo {
if !p.IsSetBar() {
return Bar_Bar_DEFAULT
}
return p.Bar
}
...
{code}
while 0.18.0 generates:
{code:go}
...
var Bar_Bar_DEFAULT Foo
func (p *Bar) GetBar() Foo {
if !p.IsSetBar() {
return Bar_Bar_DEFAULT
}
return *p.Bar
}
...
{code}
This makes usages like bar.GetBar().GetFoo() no longer compiles because GetBar
now returns non-pointer type.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)